package.json设type:module后ts-node无法运行,求解决方法
解决ES模块模式下ts-node运行.ts文件报错问题
问题原因
当package.json中设置"type": "module"启用ES模块后,Node.js默认会以ES模块规则处理文件,但ts-node需要额外配置才能正确解析.ts格式的ES模块文件,否则会触发文件扩展名识别错误。
解决步骤
1. 安装本地依赖
由于未全局安装typescript和ts-node,先在项目本地安装所需依赖:
npm install --save-dev typescript ts-node @types/node
typescript是ts-node的核心依赖,必须本地安装才能让ts-node正常工作@types/node用于提供Node.js API的类型提示(可选但推荐)
2. 添加tsconfig.json配置文件
在项目根目录创建tsconfig.json,配置ES模块相关参数:
{ "compilerOptions": { "target": "ES2020", "module": "ESNext", "moduleResolution": "Node16", "esModuleInterop": true, "skipLibCheck": true, "strict": false }, "include": ["test.ts"] }
module: "ESNext"指定编译后的模块格式为ES模块moduleResolution: "Node16"让TypeScript按照Node.js 16+的ES模块解析规则处理文件
3. 修改运行命令
运行ts-node时需要显式启用ES模块支持,使用--esm参数:
npx ts-node --esm ./test.ts
或者在package.json中添加脚本命令,方便后续运行:
{ "type": "module", "scripts": { "start": "ts-node --esm ./test.ts" }, "devDependencies": { "@types/node": "^20.0.0", "ts-node": "^10.9.0", "typescript": "^5.0.0" } }
之后直接执行npm start即可运行test.ts。
内容的提问来源于stack exchange,提问作者Islam Y-
相关产品推荐
相关产品推荐

