如何在 Amplify 控制台的配置步骤中更改节点版本

How to change Node Version in Provision Step in Amplify Console

我面临无法通过 AWS Amplify 控制台构建我的 Angular 应用程序的问题: “您是 Node.js 的 运行 版本 v8.12.0,Angular CLI 8.0+ 不支持它。 支持的官方 Node.js 版本为 10.9 或更高版本。 请访问 https://nodejs.org/en/ 以查找有关如何更新 Node.js 的说明。"

现在我想在提供步骤中将 docker 容器的默认节点版本设置为已在容器中定义的 VERSION_NODE_10。

# Framework Versions
ENV VERSION_NODE_8=8.12.0
ENV VERSION_NODE_6=6
ENV VERSION_NODE_10=10
ENV VERSION_NODE_DEFAULT=$VERSION_NODE_8 <-- Change this to $VERSION_NODE_10
ENV VERSION_RUBY_2_3=2.3.6
ENV VERSION_RUBY_2_4=2.4.3
ENV VERSION_RUBY_DEFAULT=$VERSION_RUBY_2_3
ENV VERSION_HUGO=0.51
ENV VERSION_YARN=1.13.0

amplify.yml:

version: 0.1
backend:
  phases:
    build:
      commands:
        - '# Execute Amplify CLI with the helper script'
        - amplifyPush --simple
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - node -v
        - npm run-script build
  artifacts:
    baseDirectory: dist/cr-client
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

有谁知道如何更改默认值?

AWS Amplify 使用 nvm 来处理节点版本。试试这个:

version: 0.1
backend:
  phases:
    build:
      commands:
        - '# Execute Amplify CLI with the helper script'
        - amplifyPush --simple
frontend:
  phases:
    preBuild:
      commands:
        - nvm use $VERSION_NODE_10
        - npm ci
    build:
      commands:
        - nvm use $VERSION_NODE_10
        - node -v
        - npm run-script build
  artifacts:
    baseDirectory: dist/cr-client
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

正确答案实际上并不正确。

您应该使用 NodeJS 的自定义构建映像来 运行 您的应用程序,而无需通过 nvm 更改节点版本。

为此:

  1. 打开"Amplify Console"
  2. 打开"All Apps"
  3. 选择您要更改 NodeJS 版本的应用程序
  4. 打开"Build Settings"
  5. 向下滚动到 "Build image settings" 框并点击 "edit" 按钮
  6. "Build Image" 下拉菜单中,选择选项 "Build image"
  7. 一个新的输入字段将出现在这个下拉列表的正下方,现在写下您要查找的 Docker 图像名称(与 Dockefile 中使用的相同)。例如node:12.16.1
  8. 保存
  9. 重新部署任何构建。

已接受的答案对我不起作用。

在提供步骤中更改节点版本的唯一方法是拥有自己的构建设置。

但是,有一种更简单的方法可以完成此操作。

就我而言,我想要最新的节点 10 版本。并在预构建步骤中添加 nvm install。

frontend:
  phases:
    preBuild:
      commands:
        - nvm install 10

您可以通过在预构建步骤中安装来在 amplify 中安装和使用任何节点版本。使用nvm切换node版本

preBuild:
  commands:
    - nvm install <node version>

放大控制台输出:

# Executing command: nvm install 10

2020-09-09T13:36:19.465Z [INFO]: Downloading and installing node v10.22.0...
2020-09-09T13:36:19.544Z [WARNING]: Downloading https://nodejs.org/dist/v10.22.0/node-v10.22.0-linux-x64.tar.gz...
2020-09-09T13:36:19.664Z [WARNING]: ########
2020-09-09T13:36:19.665Z [WARNING]: 11.9%
2020-09-09T13:36:19.765Z [WARNING]: #######
2020-09-09T13:36:19.765Z [WARNING]: ########################                                           43.5%
2020-09-09T13:36:19.832Z [WARNING]: ################################
2020-09-09T13:36:19.832Z [WARNING]: ######################################## 100.0%
2020-09-09T13:36:19.844Z [WARNING]: Computing checksum with sha256sum
2020-09-09T13:36:19.934Z [WARNING]: Checksums matched!

2020-09-09T13:36:20.842Z [INFO]: Now using node v10.22.0 (npm v6.14.6)

NodeJS 的自定义构建映像很痛苦。

我通常这样做: 应用程序设置 > 构建设置 > 构建图像设置单击编辑。 实时包更新:Node.js 版本 > 版本。

按照@richard 的解决方案,您可以将 .nvmrc ($ node --version > .nvmrc) 文件放在您的 repo 的根目录中,其中包含您用于构建项目的特定节点版本,并使用 nvm install 而不是 nvm use $VERSION_NODE_10