将node.js应用程序部署到Amazon Elastic Beanstalk时出错

我最近在beanstalk上部署了一个新的node.js应用程序,并继续运行以下错误?

[Instance:i-cce89e4a]命令在实例上失败。 返回码:1输出:(截断)… opt / elasticbeanstalk / containerfiles / ebnode.py“,第180行,在npm_install中引发subprocess.CalledProcessError:命令'['/ opt / elasticbeanstalk / node-install / node-v4 .4.6-linux-x64 / bin / npm','–production','rebuild']'返回非零退出状态254.钩子/opt/elasticbeanstalk/hooks/configdeploy/pre/50npm.sh失败。详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。

我的节点版本是:4.4.7

部署似乎在下面的最后一行失败:

except Exception, e: npm_debug_log = '/var/log/nodejs/npm-debug.log' app_npm_debug_log = os.path.join(app_path, "npm-debug.log") write_event('Failed to run npm install. Snapshot logs for more details.', 'ERROR') if not os.path.exists(app_npm_debug_log): utc_time_str = datetime.datetime.utcnow().strftime("UTC %Y/%m/%d %H:%M:%S") err_msg = str.format("{0} cannot find application npm debug log at {1} \n", utc_time_str, app_npm_debug_log) print(err_msg) with open(npm_debug_log, 'a') as f: f.write(err_msg) else: shutil.copyfile(app_npm_debug_log, npm_debug_log) raise e 

我似乎无法find任何可靠的解决scheme呢?

我手动压缩和上传文件。

该应用程序在当地完美工作

谁能帮忙?

 Application deployment failed at 2016-07-09T18:47:38Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh failed. + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install npm WARN package.json dashboard@0.0.2 No repository field. > history@1.17.0 postinstall /tmp/deployment/application/node_modules/history > node ./npm-scripts/postinstall.js npm ERR! Linux 4.4.14-24.50.amzn1.x86_64 npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/npm" "--production" "rebuild" npm ERR! node v4.4.6 npm ERR! npm v2.15.5 npm ERR! path /tmp/deployment/application/node_modules/gulp-main-bower-files/node_modules/main-bower-files/node_modules/vinyl-fs/node_modules/duplexify/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/esprima/bin/esvalidate.js npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall chmod npm ERR! enoent ENOENT: no such file or directory, chmod '/tmp/deployment/application/node_modules/gulp-main-bower-files/node_modules/main-bower-files/node_modules/vinyl-fs/node_modules/duplexify/node_modules/readable-stream/node_modules/unreachable-branch-transform/node_modules/recast/node_modules/esprima/bin/esvalidate.js' npm ERR! enoent This is most likely not a problem with npm itself npm ERR! enoent and is related to npm not being able to find a file. npm ERR! enoent npm ERR! Please include the following file with any support request: npm ERR! /tmp/deployment/application/npm-debug.log Running npm install: /opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/npm Setting npm config jobs to 1 npm config jobs set to 1 Running npm with --production flag Failed to run npm install. Snapshot logs for more details. Traceback (most recent call last): File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 695, in main() File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 677, in main node_version_manager.run_npm_install(options.app_path) File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 136, in run_npm_install self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir')) File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 180, in npm_install raise e subprocess.CalledProcessError: Command '['/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/npm', '--production', 'rebuild']' returned non-zero exit status 254. 

我之前在我的zip文件中包含了我的node_modules文件夹。 不包括这个文件夹解决了这个问题

我没有足够的信息来回答… /var/log/eb-activity.log是什么意思?

…但是当我用一个t2.small在一个beanstalk上运行一个npm安装时,我遇到了一个类似的错误:内存不足,npm失败。 升级到更大的实例解决了这个问题。 (承诺node_module也可以解决这个问题,但我不想)。

你应该做的是用SSH连接到实例,然后用top / htop来观察部署时发生了什么。