📌  相关文章
📜  (!)插件打字稿:@rollup plugin-typescript TS2307:找不到模块'. App.svelte' 或其对应的类型声明. src main.ts: (1:17) - TypeScript (1)

📅  最后修改于: 2023-12-03 14:58:59.436000             🧑  作者: Mango

Rollup 插件打字稿:@rollup/plugin-typescript
错误信息:TS2307:找不到模块 'App.svelte' 或其对应的类型声明。 src main.ts: (1:17)
问题分析

在使用 Rollup 构建 TypeScript 项目时,出现了 TS2307 错误,提示找不到 'App.svelte' 模块或其对应的类型声明。该错误的具体位置在项目根目录下的 'src/main.ts' 文件第一行第 17 个字符位置,这表示代码在导入 'App.svelte' 模块时发生了错误。

可能原因

这个错误提示主要有以下几个可能的原因:

  1. 'App.svelte' 文件不存在或者不在正确的路径下。
  2. 'App.svelte' 文件存在,但是没有正确导出模块,导致 Rollup 在编译时无法识别该模块。
  3. TypeScript 的编译配置中没有设置对 '.svelte' 文件的支持。
解决方案

方案一:检查 'App.svelte' 文件的路径和导出

首先,我们需要检查 'App.svelte' 文件是否存在于正确的路径下,并且是否正确导出了模块。

在 Svelte 中,我们需要使用 export default 导出组件,否则 Rollup 在编译时会无法识别该组件。因此,确保 'App.svelte' 中有正确的导出,例如:

<script>
  // your code here
</script>

<style>
  /* your styles here */
</style>

<main>
  <!-- your markup here -->
</main>

<script>
  export default App;
</script>

并且确认该文件的路径是否正确,并且在 'src/main.ts' 中正确地导入了它,例如:

import App from './App.svelte';

// your code here

方案二:在 TypeScript 编译配置中添加对 '.svelte' 文件的支持

如果在检查 'App.svelte' 文件后仍然出现错误,可能是因为 TypeScript 的编译配置中没有设置对 '.svelte' 文件的支持。

在 TypeScript 的配置文件(例如,tsconfig.json)中添加以下内容,以告诉 TypeScript 编译器识别 '.svelte' 文件:

{
  "compilerOptions": {
    "module": "esnext",
    "target": "es5",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "allowJs": true,
    "jsx": "react",
    "sourceMap": true,
    "declaration": true,
    "noImplicitAny": false,
    "strictNullChecks": true,
    "allowSyntheticDefaultImports": true,
    "lib": ["es2015", "dom"],
    "types": ["node", "svelte"],
    "typeRoots": ["node_modules/@types", "src/types"]
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

此配置中,我们通过以下代码将 Svelte 类型添加到项目中:

"types": ["node", "svelte"]

要使上述更新生效,请重新运行 Rollup。