运行自建Docker镜像报ERR_PACKAGE_PATH_NOT_EXPORTED错误如何解决
这个错误是apollo-upload-client依赖的extract-files包版本不兼容导致的:新版extract-files调整了package.json中的exports规则,移除了./public/extractFiles路径的导出,而旧版apollo-upload-client仍然按旧路径导入模块,就会触发该报错,和Node版本没有直接关联。
解决步骤
步骤1:调整依赖版本匹配规则
在项目的package.json中添加对应配置强制锁定兼容的extract-files版本:
- 如果你使用npm作为包管理器,添加
overrides字段:
{ "name": "your-project", // 其余原有配置... "overrides": { "apollo-upload-client": { "extract-files": "9.0.0" } } }
- 如果你使用yarn作为包管理器,添加
resolutions字段:
{ "name": "your-project", // 其余原有配置... "resolutions": { "extract-files": "9.0.0" } }
你也可以选择直接升级apollo-upload-client到最新正式版,新版已经适配了extract-files的导出规则,无需额外锁定版本:
npm install apollo-upload-client@latest
步骤2:修正Dockerfile配置
你当前的Dockerfile拷贝顺序存在逻辑问题:先安装依赖再全量拷贝项目文件时,如果本地项目存在node_modules目录,会直接覆盖镜像内安装的依赖包,导致依赖异常。调整为如下顺序即可:
FROM node:17.1.0 WORKDIR /app # 仅拷贝依赖声明文件,利用Docker分层缓存,修改源码无需重复安装依赖 COPY package.json package-lock.json ./ RUN npm install # 后续拷贝项目源码,不会覆盖已安装的node_modules COPY ./ ./ CMD [ "npm", "start" ]
同时请确保项目根目录存在.dockerignore文件,且已添加node_modules规则,避免本地依赖被拷贝到镜像中:
# .dockerignore 文件内容 node_modules npm-debug.log
步骤3:重新构建镜像
执行以下命令清除缓存重新构建镜像即可:
docker build --no-cache -t <你的镜像名> .
内容的提问来源于stack exchange,提问作者Curious
相关产品推荐
相关产品推荐

