You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte组件库npm build报错:TS2307无法找到模块及类型声明

解决TS2307: 找不到Svelte模块或类型声明的问题

针对你遇到的TS2307错误,以下是几个可行的解决步骤:

1. 添加Svelte模块的类型声明文件

TypeScript默认无法识别.svelte文件的类型,需要手动声明:
在src目录下创建src/svelte.d.ts文件,内容如下:

declare module '*.svelte' {
  import type { ComponentType } from 'svelte';
  const component: ComponentType;
  export default component;
}

当前tsconfig.json的"include": ["src/**/*"]已经能覆盖这个文件,无需额外修改include规则。

2. 调整Rollup插件配置

  • 移除重复的resolve插件:你同时使用了resolve()和nodeResolve(),两者是同一插件的不同版本,保留@rollup/plugin-node-resolve即可
  • 给svelte-preprocess显式指定tsconfig路径,确保TypeScript预处理逻辑正确
    修改后的plugins数组:
plugins: [
  json({ compact: true }),
  svelte({
    preprocess: autoPreprocess({
      typescript: {
        tsconfigFile: './tsconfig.json'
      }
    }),
  }),
  nodeResolve(),
  typescript({ sourceMap: true, rootDir: './src' }),
  peerDepsExternal(),
  postcss({
    extensions: ['.css'],
  }),
],

3. 修复tsconfig配置错误

你的"importsNotUsedAsValues": "remove"配置项位置错误,需要移到compilerOptions内部,否则不会生效:

{
  "extends": "@tsconfig/svelte/tsconfig.json",
  "include": ["src/**/*"],
  "exclude": ["node_modules/*", "__sapper__/*", "public/*"],
  "compilerOptions": {
    "target": "es2016",
    "module": "esnext",
    "outDir": "dist",
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "declaration": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "importsNotUsedAsValues": "remove"
  }
}

4. 验证依赖完整性

确保已安装所有必要依赖:

npm install svelte @tsconfig/svelte svelte-preprocess @rollup/plugin-typescript @rollup/plugin-node-resolve --save-dev

完成以上调整后,重新执行npm build即可解决类型找不到的问题。

内容的提问来源于stack exchange,提问作者Ninosaurier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:04:04