我对亚马逊网络服务非常新,我正在尝试在弹性beanstalk上设置node.js应用。我设置了实例并上传/部署了网站,但健康状况是" Ok" node.js日志显示重复约30次:
npm ERR! enoent ENOENT: no such file or directory, open '/var/app/current/package.json'
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! /var/app/current/npm-debug.log
npm ERR! Linux 4.1.13-19.31.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/npm" "start"
npm ERR! node v4.2.3
npm ERR! npm v2.14.7
npm ERR! path /var/app/current/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
问题是我的package.json确实存在,因为我使用npm init生成了一个。关于为何无法找到它的任何想法?这是package.json
{
"name": "testwebsite",
"version": "0.0.1",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "^1.13.3",
"express": "^4.13.3",
"express-session": "~1.0.0",
"socket.io": "^1.3.7"
},
"description": "my website",
"author": "Matt",
"engines": {
"node": ">=0.10.0"
},
"main": "server.js",
"devDependencies": {},
"license": "ISC"
}
答案 0 :(得分:31)
从正式的AWS线程[1]中,您可能正在使用顶级目录而不是压缩源本身,这似乎是(这是我的问题)。
例如,您可以将所有文件放在名为" Project"的文件夹中。您应该压缩并上传"项目"的 内容 ,而不是压缩" Project"。
[1] https://forums.aws.amazon.com/thread.jspa?messageID=476022
答案 1 :(得分:3)
我遇到的问题与此问题相同或非常相似,这是因为我的代码正在侦听自定义端口,而不是Elastic Beanstalk设置为环境变量的端口({{1} })。
我在创建快速应用之后,在我的8081
或app.js
文件顶部附近的端口中修复了此设置。例如:
server.js
然后在var app = express();
app.set('port', (process.env.PORT || 5000)); // 5000 was my original port
方法中使用此端口而不是我自己的自定义端口号:
app.listen
答案 2 :(得分:1)
我在AWS EB上也遇到了这些奇怪的错误。我通常使用CLI进行部署。
尝试一些事情。
确保package.json不在.gitignore文件中,以确保将其提交到您的存储库。 EB使用git提交历史来决定要压缩和发送的内容。如果不包括在内,则不在AWS服务器上
我正在使用EC的t2.nano实例(512MB空间)选项,这似乎是一个问题,因为我的package.json中有很多模块。不确定这是否是我的困境的根本问题,但是当我升级到具有至少1GB空间的实例时,我的错误消息发生了变化。
希望这会有所帮助
答案 3 :(得分:0)
我遇到了类似的情况,即在使用 eb cli 时,弹性 beanstalk 部署失败。我意识到弹性 beanstalk 配置文件无意中添加到我的 .gitignore 文件中,导致部署失败。
答案 4 :(得分:0)
我在压缩等方面遇到问题。我建议使用 CodePipeline 并将其链接到您的 github 或 AWS 代码提交。然后,跳过构建阶段,在部署阶段点击弹性豆茎。
您将不得不暂停该过程并打开一个新选项卡,然后转到 EB 并创建一个新环境。确保在此示例中单击 nodeJS。确保您选择“示例代码”,以便 AWS 可以使用他们的模板进行设置。 EB 构建完成后,您应该有一个指向功能模板的链接。
然后您可以返回到您的 CodePipeline 选项卡并单击 Elastic Beanstalk 进行部署,您应该会找到您刚刚制作的 EB。
我推荐这个过程,因为它会在你每次进行 git 更改时自动更新。这比压缩文件等要好。