【问题标题】:EC2 - Codedeploy NPM Not Found ErrorEC2 - Codedeploy NPM 未找到错误
【发布时间】:2018-12-18 06:40:45
【问题描述】:

我试图在我的 Codedeploy 部署中运行一个 AfterInstall 挂钩,该挂钩运行一个 shell 脚本以 cd 进入我的应用程序目录,授予用户写入权限,然后运行 ​​npm install 来安装应用程序依赖项,但我收到了部署期间出现以下错误

Error CodeScriptFailed
Script Namescripts/npm-start.sh
MessageScript at specified location: scripts/npm-start.sh run as user root failed with exit code 127
Log TailLifecycleEvent - ApplicationStart
Script - scripts/npm-start.sh
[stderr]/opt/codedeploy-agent/deployment-root/dfdfdfd-c90-9f39-4ab9-bd51-e3f737003a72/d-ZID6SUV6U/deployment-archive/scripts/npm-start.sh: line 3: npm: command not found

现在我在过去遇到过问题,以 sudo 或 root 身份运行 npm 会导致问题,因为它是与我的 ubuntu 用户一起安装的,但即使我在我的 appspec.yml 中使用 runas: ubuntu 它也是如此以 root 用户身份运行。

有人知道问题可能是什么吗?

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/app/
hooks:
  AfterInstall:
    - location: scripts/npm-install.sh
      runas: root
      timeout: 300
  ApplicationStart:
    - location: scripts/npm-start.sh
      runas: root
      timeout: 60

npm-install.sh

#!/bin/bash
cd /var/www/app
sudo chmod g+s /var/www/app
sudo chmod o-rwx /var/www/app
npm install

npm-start.sh

#!/bin/bash
cd /var/www/app
npm start

【问题讨论】:

    标签: linux bash unix aws-code-deploy


    【解决方案1】:

    您如何知道npm 已正确安装并设置在您的盒子上?在这个questionthis question 中,您可以看到有类似问题的用户。听起来您需要重新安装 NodeJS 才能让 NPM 再次满意。

    您应该登录您的盒子,然后尝试自己运行sudo npm install。如果它在这种情况下有效,您应该检查您的.bash* 文件,看看您是否做了任何将npm 放入您的路径或可能影响其运行方式的事情。如果您可以确认您的设置在非 CodeDeploy 场景中正常,您可以专门调试 CodeDeploy 场景,但我猜这是您的设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2015-10-28
      • 2023-01-08
      • 2021-10-07
      • 2018-10-09
      相关资源
      最近更新 更多