【问题标题】:EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'EXDEV:不允许跨设备链接,重命名 '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'
【发布时间】: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'

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

【问题讨论】:

标签: node.js circleci


【解决方案1】:

在我的情况下,出现此错误以及其他一些错误的原因是节点 15 的发布以及它在 FROM node:alpine 中的使用 -> 降级到 FROM node:14.14.0-alpine 就像一个魅力

【讨论】:

    【解决方案2】:

    尝试使用更新 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
    

    【讨论】:

    • 您正在使用已安装节点的 docker 映像 (circleci/node),然后您正在使用 nvm 再次安装节点。如果您打算使用 nvm 安装 node,最好使用尚未安装 node 的 docker 映像。
    【解决方案3】:

    正如其他人以某种方式提到的,这似乎与使用 Node 15 有关。就我而言,我在 .circleci/config.yml 中使用了最新的 Node docker 映像:

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

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

          - image: circleci/node:lts
    

    这解决了这个问题,我认为它可能会更好,因为它应该给我一个更稳定的版本来测试前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多