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

使用Rollup + TypeScript构建模块时遭遇AST编译错误求助

解决Rollup + TypeScript构建时type导入语法报错问题

问题分析

报错提示Expected ',', got 'Action',本质是Rollup试图用JavaScript解析器处理TypeScript文件,无法识别TS特有的type导入语法。结合你提到之前遇到过include配置不匹配的问题,核心原因大概率是Rollup的TypeScript插件没有正确捕获并处理src/CoreReduxTypes.ts文件。

解决方案

1. 统一include配置范围

把Rollup插件中的include路径缩小到源码目录,避免匹配到node_modules或其他非源码文件,同时确保和tsconfig.json的include完全对齐:

typescript({
  tsconfig: './tsconfig.json',
  noEmitOnError: true,
  declaration: true,
  declarationDir: 'dist',
  // 只匹配src目录下的TS/TSX文件
  include: ['src/**/*.ts', 'src/**/*.tsx'],
  outDir: 'dist',
  exclude: [
    '**/*.test.tsx',
    '**/*.test.ts',
    '**/*.stories.ts',
    '**/*.stories.tsx'
  ]
}),

同时检查tsconfig.json的include字段,确保包含目标文件:

{
  "include": ["src/**/*"]
}

2. 确保依赖版本兼容

@rollup/plugin-typescript需要依赖typescript,且版本需匹配。如果你的TypeScript版本是5.x+,确保插件版本至少为11.0.0以上:

# 安装最新兼容版本
npm install -D @rollup/plugin-typescript@latest typescript@latest

3. 调整插件执行顺序

确保resolve()插件在typescript()之前执行,让Rollup先找到正确的文件路径,再交给TypeScript插件处理:

plugins: [
  cleandir(),
  peerDepsExternal({ includeDependencies: true }),
  resolve(), // 先执行路径解析
  typescript({ /* 配置 */ }), // 再处理TS语法
  json()
]

4. 检查TypeScript配置的模块设置

确保tsconfig.json中启用了支持type导入的模块规范:

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "isolatedModules": true // 强制输出符合ES模块规范的代码,避免语法冲突
  }
}

5. 排查preserveModules配置冲突

如果以上方法无效,临时注释掉preserveModules: true测试是否能正常构建。若能正常构建,说明该配置的模块拆分逻辑与TS插件处理存在冲突,可尝试升级Rollup到最新版本,或添加preserveModulesRoot参数:

output: [
  {
    preserveModules: true,
    preserveModulesRoot: 'src', // 指定模块根目录,确保拆分路径正确
    dir: 'dist',
    format: 'esm'
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:27:18