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

使用PM2部署Node.js API时遇ts-node/register模块找不到错误求助

PM2部署Node.js API报错:找不到ts-node/register模块

错误信息

Failed to load Typescript interpreter: Cannot find module 'ts-node/register'
Require stack:
 - /usr/local/lib/node_modules/pm2/lib/ProcessContainer.js

Server Running On: 0.0.0.0:8080

相关配置

ecosystem.config.ts

module.exports = {
    apps: [
        {
            name: "api",
            script: "src/server.ts",
            instances: "1",
            exec_mode: "cluster",
            interpreter: "./node_modules/.bin/ts-node",
            interpreter_args: "--require ts-node/register/transpile-only --require tsconfig-paths/register",
            merge_logs: true,
            max_restarts: 10,
        },
    ],
};

package.json(devDependencies片段)

"devDependencies": {
    ...
    "ts-node": "^10.7.0",
    "ts-node-dev": "^1.1.8",
    "tsconfig-paths": "^3.14.1",
    "typescript": "^4.6.3"
},

问题原因及解决办法

  • 依赖安装范围问题:ts-node被放在devDependencies中,若部署时执行了npm install --production,开发依赖不会被安装,导致PM2找不到ts-node模块。
    解决:将ts-node移至dependencies字段,或部署时直接执行npm install(不带--production参数)。

  • 解释器路径解析问题:./node_modules/.bin/ts-node是相对路径,PM2的进程容器可能无法正确识别该路径。
    解决:换成npx ts-node(让npx自动定位本地ts-node),或在ecosystem配置中添加cwd字段指定项目根目录,示例:

    cwd: "/你的项目根目录绝对路径",
    
  • 重复配置冲突:ts-node本身已内置register加载逻辑,interpreter_args中添加--require ts-node/register/transpile-only属于重复配置,易引发加载冲突。
    解决:移除该重复参数,仅保留--require tsconfig-paths/register即可。

  • 全局PM2与本地依赖不兼容:若PM2为全局安装,它可能优先使用全局环境依赖,而非项目本地依赖。
    解决:使用本地PM2启动项目(npx pm2 start ecosystem.config.ts),或避免全局安装PM2直接用本地版本管理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:32:46