Docker环境下NX Monorepo部署Storybook失败求助
Monorepo中部署Storybook失败并触发NX Cloud客户端下载错误
在需将部分包发布至Nexus的Monorepo环境中,部署packages/design服务的Storybook任务失败,同时弹出「NX Cloud客户端不存在且无法下载新版本」提示。已尝试配置权限与代理但无效,相关错误信息和Dockerfile如下:
错误信息
> NX Running target storybook for project packages/design failed Failed tasks: - packages/design:storybook Hint: run the command with --verbose for more details. > NX No existing Nx Cloud client and failed to download new version Nx Cloud was not used for this command. You might be offline. Nx Cloud will be re-enabled when you are back online.
Dockerfile
FROM node:18-alpine WORKDIR /usr/src/design COPY package.json ./ COPY package-lock.json ./ COPY packages/design/package.json ./packages/design/package.json RUN npm ci ADD . /usr/src/design RUN mkdir -p /.npm RUN chmod 775 -R /usr/src/design RUN chmod 775 -R /tmp/ RUN chmod 775 -R /.npm ENV HTTP_PROXY "something" ENV HTTPS_PROXY "something" ENV NO_PROXY "something" EXPOSE 8080 CMD ["npm", "run", "storybook:design"]
解决办法
- 强制禁用NX Cloud:执行Storybook命令时添加
--no-cloud参数,或在项目根目录nx.json中设置useCloud: false,彻底跳过NX Cloud的检测与下载流程。例如将storybook:design脚本改为nx storybook design --no-cloud。 - 调整代理配置时机:当前Dockerfile中代理环境变量在
npm ci之后设置,导致依赖安装和NX Cloud下载阶段无法使用代理。将ENV指令移至RUN npm ci之前,同时确认代理地址包含端口(如http://proxy.example.com:8080),且NO_PROXY包含Nexus及内部服务地址。 - 修复文件权限顺序:
ADD . /usr/src/design会覆盖之前设置的权限,将权限调整指令移至ADD之后;也可临时测试将chmod 775改为chmod 777(生产环境不建议),确保容器用户对相关目录有完整读写权限。 - 配置本地缓存替代Cloud:在
nx.json中设置cacheDirectory: ".nx/cache",让构建缓存从本地读取,无需依赖NX Cloud。 - 检查Nexus依赖解析:确认
packages/design的依赖中无NX Cloud私有包,或Nexus已正确代理NX公共包源,避免依赖下载失败间接导致Storybook任务失败。
内容的提问来源于stack exchange,提问作者Khassan Kambarov
相关产品推荐
相关产品推荐

