我在部署到AWS beanstalk时偶然发现了一些问题。 起初,我认为问题是与我的Node.js应用程序,但后来我试过干净的安装。 我用WebStorm创建了一个空的Node.js Express应用程序。在nginx 1.6.2上运行的AWS Beanstalk创建新的应用程序 然后我压缩我的应用程序并通过Beanstalk控制台进行部署。 上传成功完成,但是当我运行应用程序时,我得到502坏的网关。 我试图改变默认端口,因为Web Storm创建的应用程序在端口3000上运行,所以我将它更改为8081.但我仍然得到错误。在查找日志中的错误时,我得到以下内容。NodeJS部署到AWS Beanstalk错误
/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"
任何想法,为什么发生这种情况? 感谢任何帮助。
你能找到解决方案吗? @ vladimr-novick – theChinmay 2015-04-18 11:18:32
没有。使用AWS EC2实例进行切换。我更喜欢它。多一点初始设置,但是你可以完全控制你的实例。 – 2015-07-25 08:37:40