npm ci 只能安装已存在 package-lock.json 或 npm-shrinkwrap.json 的包,并且 lockfileVersion >= 1。

74

当我在GitHub Action文件中运行npm ci命令安装依赖时,我遇到了这个问题。

我正在处理一个expo托管应用程序,并使用GitHub Actions作为CI,在每次将代码推送到developmemt分支时触发构建。

这是我的构建脚本:

name: EAS PIPELINE
on:
  push:
    branches:
      - development
  workflow_dispatch:

jobs:
  build:
    name: Install and build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 14.x

      - name: Setup Expo
        uses: expo/expo-github-action@v6
        with:
          expo-version: 4.x
          token: ${{ secrets.EXPO_TOKEN }}
          expo-cache: true

      - name: Install dependencies
        run: npm ci

      - name: Build on EAS
        run: EAS_BUILD_AUTOCOMMIT=${{1}} npx eas-cli build --platform all --non-interactive

我遇到的问题在于安装依赖步骤。

Run npm ci
  npm ci
  shell: /usr/bin/bash -e {0}
  env:
    EXPO_TOKEN: ***
npm ERR! cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/runner/.npm/_logs/2021-10-28T15_16_06_934Z-debug.log
Error: Process completed with exit code 1.
18个回答

2
如果您正在使用pnpm,则可以通过以下步骤安装节点依赖项:
      - name: Install Node.js dependencies
        run: |
          npm i -g pnpm
          pnpm i

1
在我的情况下,我在使用Yarn时遇到了npm ci错误。最终我发现我使用的Node版本不受支持。 我做了以下操作:
  • node -v 确认我的Node版本(18.0.1)
  • nvm use 16.13.0
  • 删除node_modules目录
  • 删除yarn.lock
  • 运行yarn
  • 运行yard add + 包名
之后,错误不再出现,应用程序也正确部署了。

0

我曾使用 npm 包管理器,并迁移到 yarn 包管理器,删除了 package-lock.json 文件。

我在我的 .circleci/config.yml 文件中有这个配置。

- node/install-packages

改为

- node/install-packages:
          pkg-manager: yarn

并不是“使npm工作”的真正解决方案。 - sean
你说得对,解决方案不是让npm工作,但是当我将我的项目从npm迁移到yarn时,我看到了一个类似的错误消息,这就是为什么我认为在这里添加这个评论很重要的原因。 - cristian.nieto.dev

0
删除 deploy.json 对我有帮助,因为当它被覆盖时,令牌会得到更新。
rm ~/.config/configstore/@vkontakte/vk-miniapps-deploy.json

但我有其他的服务


0
在我的情况下,问题出在一些“多余”的包上,具体来说是本地路径依赖项。从package.json中删除它们后,问题得到了解决。
我在运行npm install时收到了错误消息,而不是npm ci。

0
这种情况有时会发生,因为管道运行环境中安装的Node.js版本不同。 为了解决这个问题,我运行了以下命令: $ firebase init hosting:github 然后在被询问时键入Y以设置工作流程。 最后,在部署之前添加"npm i"作为要运行的脚本之一,就像这样: npm i && npm ci && npm run build

0
package.json 文件中,我将其更改为:
"overrides": {
    "trim-newlines": "^3.0.1"
 },

to : `

"overrides": {
    "trim-newlines": "^1.0.0"
  }

`

这对我成功地起作用了。


-1

我在部署到Heroku时遇到了类似的问题。我只需删除现有的package-lock.json文件,然后运行

    npm install

合并新的锁定文件解决了部署问题。

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