EXDEV: 跨设备链接不允许,重命名 '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'

7
我的 CircleCI 构建一直失败,显示错误信息为:
EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'

这是在安装任何库之前发生的。有人遇到过这个问题吗?

3个回答

5

在我的情况下,这个错误以及其他一些错误的原因是因为node 15版本的发布以及其在FROM node:alpine中的使用——降级到FROM node:14.14.0-alpine就可以解决问题。


2

正如其他人所提到的,这似乎与使用Node 15有关。在我的情况下,我在我的.circleci/config.yml中使用了最新的Node docker镜像:

jobs:
  build:
    docker:
      - image: circleci/node:latest

到目前为止,其他答案都建议硬编码一个特定的节点版本,但我通常对硬编码持谨慎态度。作为替代方案,我决定使用最新的Node LTS版本:

      - image: circleci/node:lts

这解决了问题,我认为这样做可能更好,因为它应该给我一个更稳定的版本,在以后的测试中使用。


-1

当我尝试使用npm更新时遇到了同样的问题。

npm install -g npm@latest

我决定使用Node Version Manager,这样我就可以根据需要设置节点版本,这也是我唯一的解决方案。

我的配置看起来像这样:

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

你正在使用一个已经安装了Node的Docker镜像(circleci/node),然后又使用nvm安装了Node。如果你要使用nvm来安装Node,最好使用一个没有预先安装Node的Docker镜像。 - bmaupin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接