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

在NX monorepo中运行nestjs-commander构建的CLI自定义命令报错

解决nest-commander + ts-node运行报错的问题

1. 搞定"Cannot use import statement outside a module"错误

只改子项目tsconfig里的ts-node配置不够,得让ts-node正确读取根目录的tsconfig.base.json,同时统一模块规则:

  • 要么在apps/api/package.json里加"type": "commonjs"(根package.json没设的话);
  • 要么运行ts-node时显式指定用根配置文件,确保继承base里的所有设置:
    ts-node --project tsconfig.base.json apps/api/src/main.ts basic
    
  • 检查根tsconfig.base.json的module字段,确保和ts-node配置一致(比如都设为commonjs)。

2. 修复"Cannot find module '@myapp/db'"错误

这是因为ts-node默认不解析tsconfig里的paths别名,得额外处理:

  • 先装tsconfig-paths依赖:
    npm install -D tsconfig-paths
    
  • 运行命令时加上路径别名注册器:
    ts-node -r tsconfig-paths/register --project tsconfig.base.json apps/api/src/main.ts basic
    
  • 或者在apps/api/tsconfig.json里配置ts-node自动加载注册器,同时确保继承根配置:
    {
      "extends": "../../tsconfig.base.json",
      // 其他原有配置
      "ts-node": {
        "compilerOptions": {
          "module": "commonjs"
        },
        "require": ["tsconfig-paths/register"]
      }
    }
    

这样ts-node就能识别@myapp/db这类别名路径了。

额外提示

  • 尽量别直接在子项目tsconfig里覆盖base的配置,优先用继承和命令行参数统一管理;
  • 如果是Nx这类monorepo,确保所有子项目的tsconfig都正确extends根配置,ts-node才能识别跨包的路径映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:25:30