尝试在 Docker 中安装 npm 包会导致如下错误:
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "-g" "install" "yuglify"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! path /usr/local/lib/node_modules/yuglify
npm ERR! EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/yuglify' -> '/usr/local/lib/node_modules/.yuglify.DELETE'
我的 Dockerfile 看起来像:
FROM ubuntu:18.04
ENV PYTHONUNBUFFERED 1
USER root
RUN apt-get -yq update && apt-get install -yq npm
CMD npm -g install yuglify
奇怪的是,如果我运行 npm install 命令两次,第二次调用会起作用。
使用 v7 on docker images (v7.0.3) 再次看到这个表面
再生产:
docker run --rm mhart/alpine-node:15 npm install -g npm<strong i="6">@7</strong>
最有用的评论
在 npm 7 中,“整个安装程序类都移到了@npmcli/arborist。”: https :
我相信问题可能出在那里。 看来它现在试图重命名而不是移动: https :
这看起来像是您链接的旧 PR 的回归: https :
该 PR 用移动替换了所有重命名(“安装:使用 EXDEV 感知移动而不是重命名”)