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

使用@rollup/plugin-typescript时出现TS2307错误,无法解析Svelte模块

使用@rollup/plugin-typescript时出现TS2307错误,无法解析Svelte模块

看起来你遇到的问题是TypeScript默认不识别.svelte模块类型,再加上Rollup插件间的配合需要微调。我来帮你一步步排查解决:

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

首先要告诉TypeScript如何识别.svelte文件。在你的webviews目录下创建types文件夹,新建svelte.d.ts文件,内容如下:

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

这个声明文件会让TS明确所有.svelte文件导出的是标准Svelte组件类型。

2. 修正tsconfig.json配置

调整你的tsconfig.json,确保它能加载到刚才的类型文件,同时清理掉语法冗余(比如数组末尾的多余逗号):

{
  "extends": "@tsconfig/svelte/tsconfig.json",
  "include": ["./**/*", "./types/**/*"],
  "exclude": ["../node_modules/*"],
  "compilerOptions": {
    "strict": true
  }
}

这里把types目录加入include列表,让TS能识别我们自定义的类型声明。

3. 调整Rollup中TypeScript插件的行为

.svelte文件应该由svelte插件通过sveltePreprocess处理TS逻辑,@rollup/plugin-typescript不需要处理这类文件。修改rollup.config.js里的typescript插件配置:

typescript({
  tsconfig: "webviews/tsconfig.json",
  sourceMap: !production,
  inlineSources: !production,
  exclude: ["**/*.svelte"] // 让TS插件跳过Svelte文件,交给svelte插件处理
}),

同时明确sveltePreprocess的TypeScript配置,避免歧义:

svelte({
  dev: !production,
  css: (css) => {
    css.write(name + ".css");
  },
  preprocess: sveltePreprocess({
    typescript: {
      tsconfigFile: "webviews/tsconfig.json"
    }
  }),
}),

4. 检查依赖版本与路径正确性

  • 版本兼容性:确保typescript、svelte-preprocess、@rollup/plugin-typescript的版本相互匹配(比如@tsconfig/svelte会标注推荐的TS版本,尽量对齐)
  • 路径检查:确认你TS文件里的组件导入路径../xxx/HelloWorld.svelte是正确的,注意大小写(Linux/macOS环境下文件名区分大小写)

试试这些步骤,应该能解决TS无法解析Svelte模块的问题。

备注:内容来源于stack exchange,提问作者Henry Lodge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:38:08