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

NX集成项目中Knex迁移无法找到@ici/shared模块求助

解决NX项目中Knex迁移无法找到共享模块的问题
  • 先构建共享包
    Knex执行迁移时直接读取编译后的JS文件,NX monorepo里的@ici/shared不会自动为其他项目预构建。先执行构建命令确保输出目录有编译文件:

    nx build shared
    
  • 让Knex识别TS Config路径
    Knex本身不支持解析tsconfig里的paths配置,需要借助tsconfig-paths模块处理:

    1. 安装依赖:
      npm install tsconfig-paths --save-dev
      
    2. 修改knexfile.js(或ts版本的配置文件),在顶部添加路径注册:
      require('tsconfig-paths/register');
      
      如果用ts-node执行Knex,也可以在命令里直接加注册参数,比如在package.json的scripts中:
      "migrate:up": "ts-node -r tsconfig-paths/register ./node_modules/knex/bin/cli.js migrate:up"
      
  • 用NX目标封装迁移命令并依赖前置构建
    在@ici/project的project.json中添加自定义目标,确保迁移前先构建依赖的共享包:

    {
      "targets": {
        "migrate:up": {
          "dependsOn": ["^build"],
          "executor": "nx:run-commands",
          "options": {
            "command": "knex migrate:up"
          }
        }
      }
    }
    

    之后用NX命令执行迁移:

    nx run project:migrate:up
    

    这里的^build会自动先构建所有依赖项目(即@ici/shared),保证共享模块已编译完成。

  • 检查TS路径配置的正确性
    确认@ici/project的tsconfig.json中,paths指向的是共享包的编译输出目录而非源码目录:

    {
      "compilerOptions": {
        "baseUrl": ".",
        "paths": {
          "@ici/shared": ["../dist/packages/shared"]
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:09