我正在尝试将节点应用程序部署到heroku,看起来像是从heroku动态分配端口的其他问题判断,它与某些东西不兼容。
(我必须删除一些细节才能发布问题)
events.js:182
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
at Object._errnoException (util.js:1041:11)
at _exceptionWithHostPort (util.js:1064:20)
at Server.setupListenHandle [as _listen2] (net.js:1305:19)
at listenInCluster (net.js:1370:12)
at Server.listen (net.js:1466:7)
at Function.listen (/app/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/app/index.js:9:21)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! TFP@1.0.0 start: `node index.js`
npm ERR! Failed at the TFP@1.0.0 start script.
答案 0 :(得分:0)
我有同样的问题。当我尝试手动设置端口时遇到了这个问题:
app.listen(80, function () {
console.log('Example blog app listening on port 80!')
});
这导致了同样的EACCES
错误。
我能够通过返回并查看我找到的Heroku docs来解决问题:
Web进程类型中的命令必须绑定到PORT环境变量中指定的端口号。如果没有,则dyno将无法启动。
因此,假设您正在使用express,如果您将端口分配切换为如下所示:
app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
然后你的应用程序应该正常启动。
如果您不使用Express,则可以将端口设置为:
var PORT = process.env.PORT || 5000;
process.env.PORT
将成为您的生产端口,5000
将成为您在本地测试服务器时使用的端口。
答案 1 :(得分:0)
我遇到了这种问题。确切的错误是端口80已在另一个项目或应用程序中启用。因此,在启动您的应用程序之前,请停止另一个映射到80端口的应用程序。 现在,您可以运行应用程序而不会出现此错误。
谢谢