Amazon Elastic Beanstalk npm找不到package.json

时间:2016-02-14 02:49:25

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

我对亚马逊网络服务非常新,我正在尝试在弹性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"
}

5 个答案:

答案 0 :(得分:31)

从正式的AWS线程[1]中,您可能正在使用顶级目录而不是压缩源本身,这似乎是(这是我的问题)。

例如,您可以将所有文件放在名为" Project"的文件夹中。您应该压缩并上传"项目"的 内容 ,而不是压缩" Project"。

[1] https://forums.aws.amazon.com/thread.jspa?messageID=476022

答案 1 :(得分:3)

我遇到的问题与此问题相同或非常相似,这是因为我的代码正在侦听自定义端口,而不是Elastic Beanstalk设置为环境变量的端口({{1} })。

我在创建快速应用之后,在我的8081app.js文件顶部附近的端口中修复了此设置。例如:

server.js

然后在var app = express(); app.set('port', (process.env.PORT || 5000)); // 5000 was my original port 方法中使用此端口而不是我自己的自定义端口号:

app.listen

此处有更多详情:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#nodejs-platform-proxy

答案 2 :(得分:1)

我在AWS EB上也遇到了这些奇怪的错误。我通常使用CLI进行部署。

尝试一些事情。

  1. 确保package.json不在.gitignore文件中,以确保将其提交到您的存储库。 EB使用git提交历史来决定要压缩和发送的内容。如果不包括在内,则不在AWS服务器上

  2. 我正在使用EC的t2.nano实例(512MB空间)选项,这似乎是一个问题,因为我的package.json中有很多模块。不确定这是否是我的困境的根本问题,但是当我升级到具有至少1GB空间的实例时,我的错误消息发生了变化。

  3. 希望这会有所帮助

答案 3 :(得分:0)

我遇到了类似的情况,即在使用 eb cli 时,弹性 beanstalk 部署失败。我意识到弹性 beanstalk 配置文件无意中添加到我的 .gitignore 文件中,导致部署失败。

答案 4 :(得分:0)

我在压缩等方面遇到问题。我建议使用 CodePipeline 并将其链接到您的 github 或 AWS 代码提交。然后,跳过构建阶段,在部署阶段点击弹性豆茎。

您将不得不暂停该过程并打开一个新选项卡,然后转到 EB 并创建一个新环境。确保在此示例中单击 nodeJS。确保您选择“示例代码”,以便 AWS 可以使用他们的模板进行设置。 EB 构建完成后,您应该有一个指向功能模板的链接。

然后您可以返回到您的 CodePipeline 选项卡并单击 Elastic Beanstalk 进行部署,您应该会找到您刚刚制作的 EB。

我推荐这个过程,因为它会在你每次进行 git 更改时自动更新。这比压缩文件等要好。