使用PM2启动项目报--resolveJsonModule错误,yarn启动正常问题咨询
问题解决:PM2启动报错“Consider using '--resolveJsonModule' to import module with '.json' extension”
核心原因
两种启动方式的TS配置加载逻辑存在差异:
yarn start src/server.ts会通过ts-node/tsx等工具自动读取项目根目录的tsconfig.json,而你已经在配置中开启了resolveJsonModule,所以能正常解析JSON模块。- PM2直接启动时,若未指定TS解释器,会默认把文件当作JS执行,或者没有正确加载
tsconfig.json的配置,导致JSON模块解析失败。
解决方案
方案1:修改PM2配置,用TS解释器启动
在ecosystem.config.js中指定使用ts-node或tsx作为解释器运行TS文件:
module.exports = { apps: [ { name: "你的项目名称", script: "src/server.ts", // 项目入口TS文件路径 interpreter: "ts-node", // 若全局未安装ts-node,可改为"npx ts-node" // 若项目使用了路径别名,可添加该行配置 interpreter_args: "--require tsconfig-paths/register" } ] };
修改后重新执行pm2 start ecosystem.config.js即可。
方案2:确保编译后的JS能正确解析JSON(先编译再启动场景)
如果项目是先编译TS为JS再用PM2启动,检查tsconfig.json的关键配置是否正确:
{ "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true, "module": "CommonJS" // 可根据项目实际需求调整模块规范 } }
重新编译TS为JS后,再用PM2启动编译后的JS文件。
方案3:让PM2直接调用yarn启动命令
直接复用本地启动的逻辑,让PM2执行yarn start命令:
module.exports = { apps: [ { name: "你的项目名称", script: "yarn", args: "start src/server.ts" } ] };
内容的提问来源于stack exchange,提问作者Đạt Lê
相关产品推荐
相关产品推荐

