执行以下命令时代码构建失败,并显示错误:npm install。原因:退出状态127

时间:2019-02-15 13:03:14

标签: amazon-web-services npm aws-codebuild

我用非常简单的代码创建了一个代码管道,并连接到codecommit。尝试构建它,但在代码构建步骤失败,指出执行npm install时出错 我错过了什么吗?抱歉,我是这个代码构建/代码管道的新手

以下是代码构建失败的日志

fetchUser()

我的buildspec.yml文件看起来像这样

[Container] 2019/02/15 11:47:39 Waiting for agent ping 
[Container] 2019/02/15 11:47:40 Waiting for DOWNLOAD_SOURCE 
[Container] 2019/02/15 11:47:40 Phase is DOWNLOAD_SOURCE 
[Container] 2019/02/15 11:47:40 CODEBUILD_SRC_DIR=/codebuild/output/src501317273/src 
[Container] 2019/02/15 11:47:40 YAML location is /codebuild/output/src501317273/src/buildspec.yml 
[Container] 2019/02/15 11:47:40 Processing environment variables 
[Container] 2019/02/15 11:47:40 Moving to directory /codebuild/output/src501317273/src 
[Container] 2019/02/15 11:47:40 Registering with agent 
[Container] 2019/02/15 11:47:40 Phases found in YAML: 1 
[Container] 2019/02/15 11:47:40 BUILD: 2 commands 
[Container] 2019/02/15 11:47:40 Phase complete: DOWNLOAD_SOURCE Success: true 
[Container] 2019/02/15 11:47:40 Phase context status code: Message: 
[Container] 2019/02/15 11:47:40 Entering phase INSTALL 
[Container] 2019/02/15 11:47:40 Phase complete: INSTALL Success: true 
[Container] 2019/02/15 11:47:40 Phase context status code: Message: 
[Container] 2019/02/15 11:47:40 Entering phase PRE_BUILD 
[Container] 2019/02/15 11:47:40 Phase complete: PRE_BUILD Success: true 
[Container] 2019/02/15 11:47:40 Phase context status code: Message: 
[Container] 2019/02/15 11:47:41 Entering phase BUILD 
[Container] 2019/02/15 11:47:41 Running command npm install 
sh: 1: npm: not found 

[Container] 2019/02/15 11:47:41 Command did not exit successfully npm install exit status 127 
[Container] 2019/02/15 11:47:41 Phase complete: BUILD Success: false 
[Container] 2019/02/15 11:47:41 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm install. Reason: exit status 127 
[Container] 2019/02/15 11:47:41 Entering phase POST_BUILD 
[Container] 2019/02/15 11:47:41 Phase complete: POST_BUILD Success: true 
[Container] 2019/02/15 11:47:41 Phase context status code: Message: 
[Container] 2019/02/15 11:47:41 Expanding base directory path: . 
[Container] 2019/02/15 11:47:41 Assembling file list 
[Container] 2019/02/15 11:47:41 Expanding . 
[Container] 2019/02/15 11:47:41 Expanding artifact file paths for base directory . 
[Container] 2019/02/15 11:47:41 Assembling file list 
[Container] 2019/02/15 11:47:41 Expanding post-saml.yaml 
[Container] 2019/02/15 11:47:41 Skipping invalid artifact path post-saml.yaml 
[Container] 2019/02/15 11:47:41 Expanding beta.json 
[Container] 2019/02/15 11:47:41 Found 1 file(s) 
[Container] 2019/02/15 11:47:41 Phase complete: UPLOAD_ARTIFACTS Success: true 
[Container] 2019/02/15 11:47:41 Phase context status code: Message: 

预先感谢您的帮助

3 个答案:

答案 0 :(得分:3)

该错误消息是您的日志以下几行:sh: 1: npm: not found

这意味着npm命令在构建环境中不可用。您是否正确选择了nodejs构建?

创建构建环境时,必须指定操作系统和运行时。在这里您不太可能没有将nodejs指定为运行时。

在此处查看分步指南:https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html#getting-started-create-build-project

在此处查看文档:{​​{3}}

从我的控制台中查看屏幕截图: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html

答案 1 :(得分:0)

我有同样的问题。要查看实际问题,请仔细检查构建日志。不是红色显示的错误,而是上面的几行。

(1)与代码构建服务角色的权限有关。 我临时分配了管理访问权限,但该访问权限有效,但由于不同的原因而失败。 要进行检查,请尝试仅执行“ aws cloudformation list-stacks”之类的简单云形成命令(尝试使用inline命令选项,或仅保留此命令以查看其工作。

(2)我的问题是一个samtemplate文件(我正在尝试使用C#),在您的情况下是serverless.yml。它是在一个位置创建一个构建文件,但是我的samtemplate指向另一个位置。如果可能的话,请在您本地计算机上的AWS CLI中尝试相同的命令

可能您选择了错误的操作系统/图像等。检查 https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started-create-build-project-console.html

答案 2 :(得分:0)

只需在此处发布,以防将来有人遇到它。如果更新为以下内容,则OP buildspec.yaml应该可以工作 BuildSpec Reference

变更日志:

  • 将buildspec更新到版本.2
  • 在安装阶段添加了一个nodejs依赖项
version: 0.2
env:
  variables:
    INPUT_FILE: "serverless.yml"
    S3_BUCKET: ""
phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
      - npm install
  build:
    commands:
      - aws cloudformation package --template $INPUT_FILE --s3-bucket $S3_BUCKET --output-template post-saml.yaml
artifacts:
    files:
        - post-saml.yaml
        - beta.json