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

nx run-commands target执行遇MODULE_NOT_FOUND错误求助

解决NX项目中自定义CLI脚本的模块找不到问题

你的问题出在ts-node默认不识别NX的tsconfig路径映射配置——项目构建时能正常解析这些别名,但直接用ts-node跑脚本时,它不会自动加载路径映射规则。下面是几种可行的解决方法:

方法1:用tsconfig-paths增强ts-node的路径解析

  1. 先安装依赖包:
npm install -D tsconfig-paths
  1. 修改project.json里的commands配置,添加-r tsconfig-paths/register参数:
"my-script": {
  "executor": "nx:run-commands",
  "defaultConfiguration": "production",
  "options": {
    "cwd": "apps/my-app",
    "commands": ["ts-node -r tsconfig-paths/register src/my-script.ts"],
    "parallel": false
  }
}

这个参数会让ts-node加载tsconfig-paths模块,自动读取tsconfig.base.json里的路径映射规则,解决模块找不到的问题。

方法2:改用NX官方的@nrwl/js:node执行器

NX提供了专门用于运行Node脚本的执行器,会自动处理项目的路径别名和依赖关系,更贴合NX的项目生态:
修改project.json的target配置:

"my-script": {
  "executor": "@nrwl/js:node",
  "options": {
    "main": "apps/my-app/src/my-script.ts",
    "tsConfig": "tsconfig.base.json"
  }
}

如果你的脚本依赖已构建的包,还可以加上buildTarget参数确保依赖先被构建:

"my-script": {
  "executor": "@nrwl/js:node",
  "options": {
    "main": "apps/my-app/src/my-script.ts",
    "tsConfig": "tsconfig.base.json",
    "buildTarget": "my-app:build"
  }
}

方法3:先构建依赖的包再执行脚本

如果你的脚本依赖NX workspace里的其他本地包,且这些包需要编译后才能被引用,可以先构建依赖包再执行脚本:

"my-script": {
  "executor": "nx:run-commands",
  "defaultConfiguration": "production",
  "options": {
    "cwd": "apps/my-app",
    "commands": [
      "nx run-many --target=build --projects=包1,包2",
      "ts-node src/my-script.ts"
    ],
    "parallel": false
  }
}

把包1,包2替换成你脚本实际依赖的本地包名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:35