Node应用部署生产环境报ERR_PACKAGE_PATH_NOT_EXPORTED错误咨询
错误根因
这个ERR_PACKAGE_PATH_NOT_EXPORTED错误触发的核心原因是:
- pako 2.x版本的package.json新增了严格的
exports字段规则,限制了外部可引用的子路径,而你使用的pizzip版本硬编码引用了未被暴露的./dist/pako.es5.js路径 - 你提到两台服务器都是Node 14.x,但Node 14的小版本差异会直接影响这个校验逻辑:Node 14.13之前的版本不会校验package.json的
exports字段,14.13及之后的版本会严格校验该规则,这就是测试环境正常、生产环境报错,哪怕完整复制node_modules也没用的核心原因,这个逻辑是Node运行时内置的,和依赖文件本身无关。 - NODE_ENV变量确实不会影响该校验逻辑,可以排除这个可能性。
修复方案
- 首先对齐两台服务器的Node精确版本:分别在两台服务器执行
node -v确认小版本号,统一使用相同的Node 14小版本即可快速复现/解决问题,推荐统一升级到Node 14的最终LTS版本14.21.3。 - 依赖版本修复(无需调整Node版本的方案):
- 方案一:升级pizzip到最新稳定版,高版本pizzip已经修复了pako引用路径不兼容的问题,适配了pako 2.x的
exports规则。 - 方案二:如果你无法升级pizzip,可在项目package.json中添加版本覆盖规则,强制pizzip依赖的pako使用1.x版本(pako 1.x没有
exports字段限制):
如果你使用npm 7及以上版本,添加overrides配置:
如果你使用yarn,添加{ "overrides": { "pizzip": { "pako": "^1.0.11" } } }resolutions配置:
配置添加完成后重新安装依赖即可生效。{ "resolutions": { "pizzip/pako": "^1.0.11" } }
- 方案一:升级pizzip到最新稳定版,高版本pizzip已经修复了pako引用路径不兼容的问题,适配了pako 2.x的
- 临时兜底方案:如果需要快速验证修复效果,可在启动Node脚本时添加
--no-conditions exports参数跳过exports规则校验,示例:
该方案仅建议临时调试使用,不建议在生产环境长期开启。node --no-conditions exports 你的启动脚本路径.js
内容的提问来源于stack exchange,提问作者Javier
相关产品推荐
相关产品推荐

