【问题标题】:AWS ElasticBeanstalk Node deployment Failed to run npm install. Snapshot logs for more detailsAWS ElasticBeanstalk 节点部署无法运行 npm 安装。快照日志以获取更多详细信息
【发布时间】:2019-05-22 18:24:21
【问题描述】:

我正在尝试在 aws 的 ElasticBeanstalk 上部署 node express、react 应用程序。但是在实例上 npm 安装期间应用程序部署失败。

上传完成。 2018-12-22 20:12:20 INFO 环境更新为 开始。 2018-12-22 20:12:23 INFO 部署新版本 到实例。 2018-12-22 20:12:48 错误无法运行 npm 安装。快照日志以获取更多详细信息。 2018-12-22 20:12:50 错误 [实例:i-0a7458ff1bef89f9a] 实例上的命令失败。返回 代码:1 输出: (截断)...opt/elasticbeanstalk/containerfiles/ebnode.py",行 180,在 npm_install raise e subprocess.CalledProcessError: 命令'['/opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/npm', '--production', 'install']' 返回非零退出状态 1. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh 失败。更多 详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。 2018-12-22 20:12:50 INFO 命令执行全部完成 实例。摘要:[成功:0,失败:1]。 2018-12-22 20:12:50
错误在实例 ID 上执行命令不成功 'i-0a7458ff1bef89f9a'。中止操作。 2018-12-22 20:12:50
错误 无法部署应用程序。
错误:ServiceError - 无法部署应用程序。

package.json
{
  "name": "express-react-boilerplate",
  "version": "1.0.0",
  "description": "boiler plate node + react app",
  "main": "index.js",
  "scripts": {
    "start:dev": "NODE_ENV=dev nodemon node server/app.js",
    "start:test": "NODE_ENV=test node server/app.js",
    "start:prod": "NODE_ENV=prod node server/app.js",
    "format": "prettier es5 --single-quote --write '**/*.js'",
    "format-check": "prettier-check es5 --single-quote --write '**/*.js'",
    "react:watch": "webpack --mode development --watch",
    "react:build": "webpack --mode development",
    "dev-env": "npm-run-all --parallel start:dev react:watch",
    "test:server": "npm run format-check && ava server/tests/* --verbose",
    "test:client": "npm run format-check && ava client/tests/**/*.test.js --verbose",
    "test:client:watch": "npm run format-check && ava client/tests/**/*.test.js --verbose --watch --coverage",
    "test": "npm run format-check && ava */tests/**/*.test.js --verbose",
    "coverage": "nyc npm run test"
  },
  "dependencies": {
    "@babel/cli": "^7.1.5",
    "@babel/core": "^7.1.6",
    "@babel/polyfill": "^7.0.0",
    "@babel/preset-env": "^7.1.6",
    "@babel/preset-react": "^7.0.0",
    "@babel/register": "^7.0.0",
    "@callstack/react-theme-provider": "^1.0.7",
    "axios": "^0.18.0",
    "babel-core": "^7.0.0-bridge.0",
    "babel-loader": "^8.0.4",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "browser-env": "^3.2.5",
    "chai": "^4.2.0",
    "css-loader": "^1.0.1",
    "dotenv": "^6.1.0",
    "enzyme": "^3.7.0",
    "enzyme-adapter-react-16": "^1.7.0",
    "express": "^4.16.4",
    "express-status-monitor": "^1.2.3",
    "node-sass": "^4.10.0",
    "pino": "^5.8.1",
    "pino-pretty": "^2.2.4",
    "prettier": "^1.15.2",
    "prettier-check": "^2.0.0",
    "react": "^16.6.3",
    "react-addons-test-utils": "^15.6.2",
    "react-dom": "^16.6.3",
    "react-intl": "^2.7.2",
    "react-redux": "^5.1.1",
    "react-router-dom": "^4.3.1",
    "redux": "^4.0.1",
    "redux-mock-store": "^1.5.3",
    "request": "^2.88.0",
    "sass-loader": "^7.1.0",
    "sinon": "^7.1.1",
    "style-loader": "^0.23.1",
    "supertest": "^3.3.0",
    "webpack": "^4.26.0",
    "webpack-cli": "^3.1.2",
    "whatwg-fetch": "^3.0.0"
  },
  "devDependencies": {
    "ava": "1.0.0-rc.2",
    "create-ava": "^2.0.1",
    "istanbul": "^0.4.5",
    "nodemon": "^1.18.6",
    "npm-run-all": "^4.1.3",
    "nyc": "^13.1.0"
  },
  "ava": {
    "babel": {
      "testOptions": {
        "presets": [
          "@babel/preset-env",
          "@babel/preset-react"
        ]
      }
    },
    "require": [
      "@babel/register",
      "@babel/polyfill",
      "./client/tests/config.js",
      "./client/tests/helpers/browserEnvironment.js"
    ]
  }
}

我不知道部署出了什么问题。

日志说一些关于 python 2 not found 但我不确定这是否是问题所在。以下是日志供参考

-------------------------- /var/log/eb-activity.log ------------------------------------- gyp动词cli ['/opt/elasticbeanstalk/node-install /node-v10.14.1-linux-x64/bin/node', gyp动词cli
'/tmp/deployment/application/node_modules/node-gyp/bin/node-gyp.js',
gyp动词cli'rebuild',gyp动词cli'--verbose',gyp动词cli '--libsass_ext=', gyp 动词 cli '--libsass_cflags=', gyp 动词 cli '--libsass_ldflags=', gyp 动词 cli '--libsass_library=' ] gyp 使用 node-gyp@3.8.0 的信息 使用 node@10.14.1 的 gyp 信息 | linux | x64 gyp 动词命令重建 [] gyp 动词命令 clean [] gyp 动词 清除“构建”目录 gyp 动词命令 configure [] gyp 动词检查 python 检查 PATH 中的 Python 可执行文件“python2” gyp动词which失败错误:未找到:python2 gyp动词which 在 getNotFoundError 失败 (/tmp/deployment/application/node_modules/which/which.js:13:12) gyp 动词 which 在 F 处失败 (/tmp/deployment/application/node_modules/which/which.js:68:19) gyp 动词 which 在 E 处失败 (/tmp/deployment/application/node_modules/which/which.js:80:29) gyp 动词which 失败于 /tmp/deployment/application/node_modules/which/which.js:89:16 gyp 动词which 失败于 /tmp/deployment/application/node_modules/isexe/index.js:42:5 gyp 动词which 失败于 /tmp/deployment/application/node_modules/isexe/mode.js:8:5 gyp动词 which FSReqWrap.oncomplete (fs.js:154:21) gyp 动词失败 which失败的python2 {错误:未找到:python2 gyp动词which 在 getNotFoundError 失败 (/tmp/deployment/application/node_modules/which/which.js:13:12) gyp 动词 which 在 F 处失败 (/tmp/deployment/application/node_modules/which/which.js:68:19) gyp 动词 which 在 E 处失败 (/tmp/deployment/application/node_modules/which/which.js:80:29) gyp 动词which 失败于 /tmp/deployment/application/node_modules/which/which.js:89:16 gyp 动词which 失败于 /tmp/deployment/application/node_modules/isexe/index.js:42:5 gyp 动词which 失败于 /tmp/deployment/application/node_modules/isexe/mode.js:8:5 gyp动词 which FSReqWrap.oncomplete (fs.js:154:21) gyp 动词失败 which失败的堆栈:gyp动词which失败'错误:不是 找到:python2\n 在 getNotFoundError (/tmp/deployment/application/node_modules/which/which.js:13:12)\n
在 F (/tmp/deployment/application/node_modules/which/which.js:68:19)\n 在 E (/tmp/deployment/application/node_modules/which/which.js:80:29)\n 在 /tmp/deployment/application/node_modules/which/which.js:89:16\n
在 /tmp/deployment/application/node_modules/isexe/index.js:42:5\n
在 /tmp/deployment/application/node_modules/isexe/mode.js:8:5\n 在 FSReqWrap.oncomplete (fs.js:154:21)',gyp 动词 which 失败
代码:'ENOENT'} gyp 动词检查 python 检查 Python PATH gyp动词which中的可执行“python”成功python /usr/bin/python gyp verb 检查 python 版本/usr/bin/python -c "import sys; print "2.7.15 gyp verb check python version .%s.%s" % sys.version_info[:3];" 返回:%j gyp verb get node dir no --指定目标版本,回退到主机节点版本:10.14.1 gyp verb command install ['10.14.1'] gyp verb install input 版本字符串“10.14.1”gyp动词安装安装版本: 10.14.1 gyp verb install --ensure 已通过,因此如果已安装 gyp verb install version 已安装,则不会重新安装, 需要检查“installVersion” gyp 动词得到“installVersion” 9 gyp 动词需要“installVersion” 9 gyp 动词安装版本好 gyp 动词获取节点目录目标节点版本安装:10.14.1 gyp动词 构建目录试图创建“构建”目录: /tmp/deployment/application/node_modules/node-sass/build gyp 错误! 配置错误gyp ERR!堆栈错误:EACCES:权限被拒绝, mkdir '/tmp/deployment/application/node_modules/node-sass/build' gyp 呃!系统 Linux 4.14.77-70.82.amzn1.x86_64 gyp ERR!命令 “/opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/node” “/tmp/deployment/application/node_modules/node-gyp/bin/node-gyp.js” "重建" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=""--libsass_library="gyp 错误! cwd /tmp/deployment/application/node_modules/node-sass gyp 错误!节点-v v10.14.1 gyp 错误!节点-gyp -v v3.8.0 gyp 错误!不好构建 失败,错误代码:1 npm WARN optional SKIPPING OPTIONAL 依赖:fsevents@1.2.4(node_modules/fsevents):npm WARN notsup 跳过可选依赖:fsevents@1.2.4 不受支持的平台: 想要 {"os":"darwin","arch":"any"}(当前: {"os":"linux","arch":"x64"}) npm 错误!代码 ELIFECYCLE npm 错误! errno 1 npm 错误! node-sass@4.10.0 安装后:node scripts/build.js npm ERR!出口 状态 1 npm 错误! npm 错误!在 node-sass@4.10.0 失败 安装后脚本。 npm 错误!这可能不是问题 npm。上面可能有额外的日志输出。 npm 错误!可以在以下位置找到此运行的完整日志:npm ERR! /tmp/.npm/_logs/2018-12-22T20_12_48_626Z-debug.log 运行 npm 安装: /opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/npm
将 npm config jobs 设置为 1 npm config jobs 设置为 1 Running npm 带有 --production 标志无法运行 npm install。快照日志 更多细节。 UTC 2018/12/22 20:12:48 找不到应用程序 npm 调试日志位于 /tmp/deployment/application/npm-debug.log 回溯(最近一次通话最后): 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”,第 695 行,在 主要的() 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”,第 677 行,在 main node_version_manager.run_npm_install(options.app_path) 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”,第 136 行,在 run_npm_install self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir')) 文件“/opt/elasticbeanstalk/containerfiles/ebnode.py”,第 180 行,在 npm_install raise e subprocess.CalledProcessError: 命令'['/opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/npm', '--production', 'install']' 返回非零退出状态 1 (执行者::NonZeroExitStatus)

[2018-12-22T20:12:48.669Z] 信息 [4110] - [应用程序更新 app-6694-181222_201205@3/AppDeployStage0/AppDeployPreHook/50npm.sh]: 活动失败。 [2018-12-22T20:12:48.669Z] 信息 [4110] - [应用程序更新 app-6694-181222_201205@3/AppDeployStage0/AppDeployPreHook]:活动 失败的。 [2018-12-22T20:12:48.669Z] 信息 [4110] - [应用程序更新 app-6694-181222_201205@3/AppDeployStage0]:活动失败。 [2018-12-22T20:12:48.670Z] 信息 [4110] - [应用程序更新 app-6694-181222_201205@3]:已完成活动。结果:申请 更新 - 命令 CMD-AppDeploy 失败 [2018-12-22T20:17:12.316Z] 信息 [4490] - [CMD-TailLogs]:开始活动... [2018-12-22T20:17:12.316Z] 信息 [4490] - [CMD-TailLogs/AddonsBefore] :开始活动... [2018-12-22T20:17:12.316Z] 信息 [4490] - [CMD-TailLogs/AddonsBefore]:已完成的活动。 [2018-12-22T20:17:12.316Z] 信息 [4490] - [CMD-TailLogs/TailLogs]: 开始活动... [2018-12-22T20:17:12.316Z] 信息 [4490] - [CMD-TailLogs/TailLogs/TailLogs] : 开始活动...

【问题讨论】:

    标签: node.js amazon-web-services express devops amazon-elastic-beanstalk


    【解决方案1】:

    您的权限似乎有问题:

    gyp verb build dir attempting to create "build" dir: /tmp/deployment/application/node_modules/node-sass/build gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir '/tmp/deployment/application/node_modules/node-sass/build' gyp ERR! System Linux 4.14.77-70.82.amzn1.x86_64 gyp ERR! command "/opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/node" 我不确定为什么会这样 - 你需要 sudo 访问权限吗?

    【讨论】:

    • 我对 aws 很陌生。如果您的意思是在 aws cli 中进行 sudo 访问,那么没有。如果 sudo 在其他地方,我不确定如何提供 sudo 访问权限。
    • 让我们这样说 - 你得到一个“权限被拒绝”错误,在 /tmp 中不应该是这种情况...... - 这就是 npm 正在做构建你的 npm 工作的地方模块并在将它们放置到位之前解决依赖关系。也许其他一些以 root 身份运行的进程留下了阻碍你的东西,或者你正在运行的用户几乎没有权限。如果您能找出导致此故障的原因,那么您就是解决它的大部分方法。
    猜你喜欢
    • 2020-05-19
    • 2017-12-30
    • 2017-10-20
    • 1970-01-01
    • 2023-01-23
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多