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

全新Nx工作区运行lint与jest测试时依赖缺失报错求助

Nx工作区执行lint/test时找不到本地eslint/jest依赖的解决方法

问题场景

执行以下操作后遇到依赖找不到的错误:

  1. 通过npx create-nx-workspace --pm pnpm创建Nx工作区
  2. 执行nx generate @nx/js:lib utils --directory=libs生成工具库
  3. 运行nx lint utils提示Error: The externalDependency 'eslint' for 'utils:lint' could not be found;运行nx test utils提示Error: The externalDependency 'jest' for 'utils:test' could not be found

已确认package.json包含相关依赖(配置如下),重装依赖无效,需在不安装全局依赖的前提下解决:

{
  "name": "@simple-nx-workspace/source",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": { },
  "private": true,
  "dependencies": {
    "tslib": "^2.3.0"
  },
  "devDependencies": {
    "@nx/eslint": "19.0.1",
    "@nx/eslint-plugin": "19.0.1",
    "@nx/jest": "19.0.1",
    "@nx/js": "19.0.1",
    "@nx/workspace": "19.0.1",
    "@swc-node/register": "~1.8.0",
    "@swc/core": "~1.3.85",
    "@swc/helpers": "~0.5.2",
    "@types/jest": "^29.4.0",
    "@types/node": "18.16.9",
    "@typescript-eslint/eslint-plugin": "^7.3.0",
    "@typescript-eslint/parser": "^7.3.0",
    "eslint": "~8.57.0",
    "eslint-config-prettier": "^9.0.0",
    "jest": "^29.4.1",
    "jest-environment-node": "^29.4.1",
    "nx": "19.0.1",
    "prettier": "^2.6.2",
    "ts-jest": "^29.1.0",
    "ts-node": "10.9.1",
    "typescript": "~5.4.2"
  }
}

解决方法

1. 使用pnpm exec执行nx命令

直接运行nx命令时,可能无法正确识别pnpm管理的本地依赖路径,改用pnpm exec来执行任务:

pnpm exec nx lint utils
pnpm exec nx test utils

2. 添加npm脚本简化执行

在package.json的scripts字段中添加对应命令,pnpm会自动从本地node_modules中加载依赖:

"scripts": {
  "lint:utils": "nx lint utils",
  "test:utils": "nx test utils"
}

之后通过以下命令执行:

pnpm run lint:utils
pnpm run test:utils

3. 清理pnpm缓存并重新安装依赖

缓存异常可能导致依赖路径失效,执行以下命令清理缓存并重装:

pnpm store prune
pnpm install

4. 验证Nx任务配置

检查libs/utils/project.json中的任务配置,确保lint和test的executor正确指向Nx官方插件,没有硬编码全局依赖路径:

  • lint任务示例:
    "lint": {
      "executor": "@nx/eslint:lint",
      "outputs": ["{options.outputFile}"],
      "options": {
        "lintFilePatterns": ["libs/utils/**/*.ts"]
      }
    }
    
  • test任务示例:
    "test": {
      "executor": "@nx/jest:jest",
      "outputs": ["{workspaceRoot}/coverage/libs/utils"],
      "options": {
        "jestConfig": "libs/utils/jest.config.ts",
        "passWithNoTests": true
      }
    }
    

内容的提问来源于stack exchange,提问作者noi.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:20:03