运行npx ng test出现ERR_PACKAGE_PATH_NOT_EXPORTED错误如何解决
错误根因
该错误由postcss和postcss-loader的版本不兼容导致:高版本postcss(≥8.4.39)的package.json中exports字段未暴露./package.json路径,而低版本postcss-loader(<6.2.1)会主动引入postcss/package.json读取配置,触发Node.js的模块导出校验规则。
排查步骤
- 执行以下命令查看当前项目中两个依赖的版本:
npm list postcss postcss-loader # yarn 环境执行:yarn list postcss postcss-loader # pnpm 环境执行:pnpm list postcss postcss-loader
- 确认是否符合「postcss≥8.4.39 且 postcss-loader<6.2.1」的版本组合,该组合是触发报错的典型场景。
解决方案
方案1:升级postcss-loader(优先推荐)
升级postcss-loader到6.2.1及以上版本,新版本已经修复了读取postcss/package.json的逻辑:
npm install postcss-loader@latest --save-dev # yarn 环境执行:yarn add postcss-loader@latest --dev # pnpm 环境执行:pnpm add postcss-loader@latest --save-dev
方案2:降级postcss版本
如果项目有依赖约束无法升级postcss-loader,可将postcss降级到8.4.38及以下版本:
npm install postcss@8.4.38 --save-dev # yarn 环境执行:yarn add postcss@8.4.38 --dev # pnpm 环境执行:pnpm add postcss@8.4.38 --save-dev
方案3:升级Angular构建依赖
如果是Angular官方构建工具间接引入的版本不兼容,可升级@angular-devkit/build-angular到对应LTS版本,官方后续版本已适配高版本postcss的导出规则:
npm install @angular-devkit/build-angular@latest --save-dev
生效验证
执行完上述方案后,建议清空本地依赖和缓存重新安装,避免旧版本残留影响:
# 删除旧依赖和lock文件 rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml # 重新安装依赖 npm install # 执行测试命令验证 npx ng test
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

