NodeJS 在GitHub操作中运行ubuntu x86-64时,由于缺少android-arm,esbuild失败

72qzrwbm  于 2023-02-03  发布在  Node.js
关注(0)|答案(1)|浏览(692)

我有一个使用serverless-bundle打包的节点14 AWS lambda函数,它反过来使用esbuild。本地安装它可以很好地使用npm installnpm ci,删除node_modules时也是如此。这段代码应该在AWS Lambda标准x86-64容器上运行。为了部署它,我设置了一个非常直接的GitHub操作工作流

runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Setup Node.js 14.x
        uses: actions/setup-node@v3
        with:
          node-version: 14.x
          cache: 'npm'
      - name: Install
        run: npm ci

但是,install步骤会立即失败,并显示:

Run npm ci
npm ERR! @esbuild/android-arm not accessible from esbuild

我不明白到底是怎么回事。当然,package-lock.json可能会受到影响,因为它是在我的Mac M1上生产的,因为它有一个@esbuild/darwin-arm64条目,但是:
1.为什么GHA上的ubuntu-latest需要android-arm二进制文件?
1.如果问题是package-lock.json是在一个架构上生成的,然后被用来安装在另一个架构上,那么我首先应该如何生成package-lock.json呢?我不想运行我的整个开发环境dockerized...:(
我发现的唯一的线索是类似this的问题,建议是升级到Node 16(没有任何解释为什么它会有帮助).我可以这样做,但它会使我的环境非常混乱,在我的解决方案中,不同的组件有不同的nvm配置,所以我宁愿不这样做(特别是当我不明白 * 为什么 * 它会有帮助).
我确实看到我的package-lock.json包含以下内容:

"esbuild": {
      "version": "0.16.17",
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
      "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
      "dev": true,
      "requires": {
        "@esbuild/android-arm": "0.16.17",
        "@esbuild/android-arm64": "0.16.17",
        "@esbuild/android-x64": "0.16.17",
        "@esbuild/darwin-arm64": "0.16.17",

但是,esbuild:s package.json将这些变量列为optionalDependencies

"optionalDependencies": {
    "@esbuild/android-arm": "0.16.17",
    "@esbuild/android-arm64": "0.16.17",
    "@esbuild/android-x64": "0.16.17",
    "@esbuild/darwin-arm64": "0.16.17",
    "@esbuild/darwin-x64": "0.16.17",
fhg3lkii

fhg3lkii1#

这似乎与我的npm版本有关。我在本地有7.24.2,但在GHA上我得到了6.x,因为这是节点14中的默认npm版本。这可能与处理optionalDependencies的方式不同有关。
解决方案是添加一个在GHA上升级npm的步骤:

- name: Upgrade npm
        run: npm install -g npm@7

actions/setup-node上有一个request来支持npm_version,但目前还不支持,建议的解决方案如上所述。

相关问题