在部署到AWS beanstalk时,我偶然发现了一些问题。 起初我认为问题出在我的Node.js应用程序上,但后来我尝试了干净安装。 我用WebStorm创建了空白的Node.js Express应用程序。在nginx 1.6.2上运行的AWS Beanstalk上创建了新的应用程序 然后我压缩我的应用程序并通过Beanstalk控制台进行部署。 上传成功完成,但是当我运行应用程序时,我得到502坏网关。 我已经尝试更改默认端口,因为Web Storm创建了在端口3000上运行的应用程序,因此我将其更改为8081.但我仍然收到错误。在查找日志中的错误时,我得到了以下内容。
/var/log/nodejs/nodejs.log
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/app/current/app.js:8:14)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)module.js:340
throw err;
Error: Cannot find module '/var/app/current/routes/index'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/app/current/app.js:8:14)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
module.js:340
很清楚问题是因为节点由于相对路径而无法找到模块所以我改变了所有具有相对路径的条目以使用绝对路径。例如
var app = require('../app');
我已改为
var path = require('path');
var app = require(path.join(__dirname, '../app'));
我仍然得到同样的错误。
此外,我在nginx日志中收到以下错误:
/var/log/nginx/error.log
-------------------------------------
2014/12/05 14:28:35 [error] 23444#0: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.25.31, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "nodesampleapp-env.elasticbeanstalk.com"
知道为什么会这样吗? 感谢任何帮助。
答案 0 :(得分:0)
修复你的package.js!
就我而言,节点文件名错误。
{
"name": "your application-name",
"version": "0.0.1",
"private": true,
"scripts":
{
"start": "node app_bot.js"
},
...