我正在尝试使用 Amazon Elastic Beanstalk 服务部署 node.js 应用程序。按照本教程(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html),我设法部署了应用程序。但是,一旦上传到亚马逊,应用程序就无法启动。调查日志显示以下错误:“无法运行 npm install”。
有谁知道问题可能是什么?该应用程序在本地运行良好。
在此先感谢您的帮助!
我正在尝试使用 Amazon Elastic Beanstalk 服务部署 node.js 应用程序。按照本教程(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html),我设法部署了应用程序。但是,一旦上传到亚马逊,应用程序就无法启动。调查日志显示以下错误:“无法运行 npm install”。
有谁知道问题可能是什么?该应用程序在本地运行良好。
在此先感谢您的帮助!
我遇到了同样的问题,Kevin 的解决方案为我解决了这个问题,但引入了另一个问题:EB 为自动扩展而生成的新实例也需要手动配置。这是我为解决这两个问题而对 Kevin 方法所做的修改:
解决 Kevin 问题的另一种方法是将所需的包添加到应用程序的配置文件中。创建一个扩展名为 .config 的配置文件(例如,myapp.config)并将其放在源包的 .ebextensions 顶级目录中。为了需要 openssl-devel 包,在配置文件中包含这些行:
packages:
yum:
openssl-devel: []
有关配置文件所在位置的详细信息:http: //docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html
以及在配置文件中包含包(以及更多)的详细信息:http: //docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
我发现了问题所在。这是解释。
npm 包管理器无法安装某些包的原因是因为某些包需要先安装 linux 库(即 OpenSSL-devel)。为了解决这个问题,我不得不:
1. SSH 到与我的 Node.js Elastic Beanstalk 实例关联的我的 EC2 实例
首先,删除 EC2 实例上的“终止保护”(单击您的 EC2 实例,然后查找“更改终止保护”。然后,您需要向 EC2 实例添加“密钥对”。为此,请转到 ELB 管理器并编辑您的 ELB 应用程序的配置文件。有关详细说明,请查看此链接(SSH 到 Elastic Beanstalk 实例)
2. 安装缺少的库 (在我的例子中,因为bcrypt npm 包需要它)
sudo yum update
sudo yum install openssl-devel
希望这可以帮助!
我遇到了这个问题,并通过简单地选择下一个更大的实例类型来解决它。
我发现了一个类似的问题,对我来说,这个错误是因为一个节点包没有成功安装,所以当我从我的 package.json 中删除那个节点包时,因为我真的不需要它,它起作用了!