You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node与Ubuntu多阶段Docker构建中npm命令报错求助

解决多阶段构建中从Node镜像复制npm到Ubuntu后无法运行的问题

你遇到的问题根源是仅复制了/usr/local/bin下的node和npm可执行文件,但npm的核心依赖库未被同步。/usr/local/bin/npm本质是指向../lib/node_modules/npm/bin/npm-cli.js的脚本/软链接,运行时需要依赖/usr/local/lib/node_modules/npm目录下的完整库文件,缺失这些文件就会触发MODULE_NOT_FOUND错误。

修改后的Dockerfile

# Stage 1: Node.js/npm stage
FROM node:16 AS node
WORKDIR /app

# Stage 2: ubuntu stage
FROM ubuntu 

WORKDIR /app

# 复制Node二进制可执行文件
COPY --from=node /usr/local/bin/node /usr/local/bin/
# 复制npm的完整依赖库目录
COPY --from=node /usr/local/lib/node_modules/ /usr/local/lib/node_modules/
# 重新建立npm的软链接(匹配原Node镜像的文件结构)
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

关键说明

  1. 必须复制/usr/local/lib/node_modules/目录,这里包含了npm运行所需的所有核心模块(包括报错中提到的cli.js)。
  2. 重新建立软链接是因为原Node镜像中/usr/local/bin/npm并非独立可执行文件,而是指向库目录中脚本的链接,直接复制链接会失效,需要在Ubuntu镜像中重新创建对应关联。

构建修改后的镜像后,运行npm --version或npm命令即可正常返回预期结果。

内容的提问来源于stack exchange,提问作者user22303309

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:50:19