我在evennode部署我的nodejs应用程序,但我得到这个错误

我一直在尝试一切,但它一直在日志中抛出这个错误。 并试图访问该url时说502坏的网关。

events.js:141 throw er; // Unhandled 'error' event ^ Error: listen EACCES 0.0.0.0:80 at Object.exports._errnoException (util.js:870:11) at exports._exceptionWithHostPort (util.js:893:20) at Server._listen2 (net.js:1221:19) at listen (net.js:1270:10) at net.js:1379:9 at nextTickCallbackWith3Args (node.js:453:9) at process._tickCallback (node.js:359:17) at Function.Module.runMain (module.js:443:11) at startup (node.js:139:18) at node.js:968:3 

这里是我的app.js(也是我在package.json中指定的启动脚本)。

  var app = require('express')(); var http = require('http').Server(app); var path = require('path'); var io = require('socket.io')(http); var routes = require('./routes/home'); var users = require('./routes/users'); io.on('connection', function(socket) { console.log('a user connected'); socket.on('message', function (data) { console.log(data); io.emit('msg', data); }); }); http.listen(process.env.port, '0.0.0.0', function(err) { console.log('server runninng at ' + http.url ); }); 

虽然在控制台(标准输出)它说 – >启动应用程序 – >在未定义的运行服务器

您应该将process.env.port更新为process.env.port ,因为env vars区分大小写。

听着应该是这样的:

 http.listen(process.env.PORT, '0.0.0.0', function(err) { console.log('server runninng at ' + http.url ); }); 

试用你的代码来看看是什么导致了这个问题。 第一次尝试:

 http.listen(4000, '0.0.0.0', function(err) {... 

这将解决问题,如果这是与你的process.env.PORTvariables。

如果这不起作用,请尝试:

 http.listen(4000, function(err) {... 

如果与提供的主机名( 0.0.0.0 )有关,这将解决问题。 listen函数中的hostname参数是可选的,所以它应该没有问题。

0.0.0.0不是一个有效的地址来收听。 尝试使用127.0.0.1来监听本地机器上的循环,或者改为取得机器的IP地址。

0.0.0.0表示通常所有的路由端口。