Pulumi打包基础设施组件引入时报Cannot use import statement outside a module错误
问题原因
这个错误由你开发的npm包@obutterbach/bucket的配置不匹配导致,核心问题有两个:
- 包入口配置错误:
package.json中的main字段指向了未编译的TypeScript源文件index.ts,而非tsc编译后的JavaScript产物,运行时直接加载TS源文件触发语法报错 - 模块规范冲突:
tsconfig.json中配置编译输出为commonjs规范,但package.json中设置了"type": "module",二者定义的模块标准不兼容
修复步骤
- 调整
@obutterbach/bucket包的package.json配置:
{ // 修改main字段指向编译后的js产物 "main": "bin/index.js", // 删除type: module配置,和commonjs编译输出保持一致 // "type": "module", // 可选补充files字段,控制发布包包含的文件 "files": [ "bin/**/*", "*.d.ts" ] }
- 在包目录下重新执行
npm run build、npm publish发布修复后的新版本 - 在独立的Pulumi部署仓库中更新
@obutterbach/bucket到最新版本,再次执行pulumi preview即可正常运行
内容的提问来源于stack exchange,提问作者Oli at cdcloudlogix.com
相关产品推荐
相关产品推荐

