TypeScript Pulumi可复用组件报错:Cannot use import outside module
解决Pulumi可复用组件中"Cannot use import statement outside a module"错误
问题根源
直接从Git仓库安装pulumi-beta包时,仓库仅包含TypeScript源码,Node.js无法直接解析TS语法中的import语句。即便添加"type": "module"也无效——核心问题是未将TS代码编译为Node.js可执行的JS文件。
解决方案
1. 配置pulumi-beta组件仓库的编译与提交
修改package.json
添加编译脚本、指定主入口和类型文件路径:
{ "name": "pulumi-beta", "version": "0.1.0", "main": "bin/index.js", "types": "bin/index.d.ts", "scripts": { "build": "tsc" }, // 保留原有依赖等配置 }
调整tsconfig.json
确保编译输出到bin目录,并生成类型声明文件:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./bin", "rootDir": "./", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "declaration": true } }
编译并提交产物
运行编译命令生成JS文件:
npm run build
修改.gitignore,移除对bin目录的忽略,将编译后的bin目录提交到GitHub仓库。
2. 重新安装依赖并测试
在pulumi-alpha仓库中执行以下命令:
rm -rf node_modules package-lock.json npm i git+https://github.com/briancaffey/pulumi-beta.git tsc pulumi preview
可选优化:发布到npm仓库
若需更规范的组件分发,可将pulumi-beta发布到npm公有/私有仓库,安装时直接使用包名(如npm i pulumi-beta),避免直接从Git源码安装的问题。
内容的提问来源于stack exchange,提问作者briancaffey
相关产品推荐
相关产品推荐

