【发布时间】:2021-02-09 01:22:49
【问题描述】:
我的构建在 CircleCI 上不断失败并出现错误:
EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'
这发生在安装任何库之前。有人遇到过这个问题吗?
【问题讨论】:
我的构建在 CircleCI 上不断失败并出现错误:
EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'
这发生在安装任何库之前。有人遇到过这个问题吗?
【问题讨论】:
在我的情况下,出现此错误以及其他一些错误的原因是节点 15 的发布以及它在 FROM node:alpine 中的使用 -> 降级到 FROM node:14.14.0-alpine 就像一个魅力
【讨论】:
尝试使用更新 npm 时遇到同样的问题
npm install -g npm@latest
我决定改用节点版本管理器,这样我就可以根据需要设置节点版本,这也是我唯一可行的解决方案。
我的配置如下:
version: 2.1
jobs:
build:
docker:
- image: 'circleci/node:latest'
environment:
NODE_VERSION: v12.18.1
steps:
- checkout
- run:
name: set node version
command: |
set +e
touch $BASH_ENV
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.36.0/install.sh | bash
echo 'export NVM_DIR="$HOME/.nvm"' >> $BASH_ENV
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV
echo 'nvm install $NODE_VERSION' >> $BASH_ENV
echo 'nvm alias default $NODE_VERSION' >> $BASH_ENV
- run:
name: npm install project dependencies
command:
npm install
- run:
name: lint
command:
npm run lint
【讨论】:
circleci/node),然后您正在使用 nvm 再次安装节点。如果您打算使用 nvm 安装 node,最好使用尚未安装 node 的 docker 映像。
正如其他人以某种方式提到的,这似乎与使用 Node 15 有关。就我而言,我在 .circleci/config.yml 中使用了最新的 Node docker 映像:
jobs:
build:
docker:
- image: circleci/node:latest
到目前为止,其他答案都建议对特定节点版本进行硬编码,但我通常对硬编码持谨慎态度。作为替代方案,我决定使用最新的 LTS 版本的 Node:
- image: circleci/node:lts
这解决了这个问题,我认为它可能会更好,因为它应该给我一个更稳定的版本来测试前进。
【讨论】: