我一直在尝试一切,但它不断在日志中抛出此错误。并且在尝试访问网址时说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 );
});
虽然在控制台(stdout)它说 - >启动应用程序 - >在undefined运行服务器
答案 0 :(得分:1)
您应该将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 );
});
答案 1 :(得分:1)
尝试使用代码查看导致问题的原因。首先尝试:
http.listen(4000, '0.0.0.0', function(err) {...
如果它与您的process.env.PORT
变量有关,这将解决问题。
如果不起作用,请尝试:
http.listen(4000, function(err) {...
如果它与提供的主机名(0.0.0.0
)有关,这将解决问题。 listen函数中的hostname参数是可选的,所以没有。
答案 2 :(得分:0)
0.0.0.0不是要侦听的有效地址。尝试使用127.0.0.1在本地计算机上收听回路,或者改为获取计算机IP地址。
0.0.0.0表示通常用于路由的所有端口。