全新Nx工作区运行lint与jest测试时依赖缺失报错求助
Nx工作区执行lint/test时找不到本地eslint/jest依赖的解决方法
问题场景
执行以下操作后遇到依赖找不到的错误:
- 通过
npx create-nx-workspace --pm pnpm创建Nx工作区 - 执行
nx generate @nx/js:lib utils --directory=libs生成工具库 - 运行
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
相关产品推荐
相关产品推荐

