我无法让Express工作。现在。我收到以下错误:
server.js
events.js:154
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
at Object.exports._errnoException (util.js:856:11)
at exports._exceptionWithHostPort (util.js:879:20)
at Server._listen2 (net.js:1214:19)
at listen (net.js:1263:10)
at Server.listen (net.js:1359:5)
at EventEmitter.listen (D:\Users\ME\Desktop\Utile\Web\_NodeJS\node_modules\express\lib\application.js:617:24)
at Object.<anonymous> (D:\Users\ME\Desktop\Utile\Web\_NodeJS\www.njstesting.herokuapp.com\server.js:20:5)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
我有以下结构:
-server.js
-public
--index.html
--css
---index_styles.css
使用以下server.js代码:
var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(__dirname + '/public'));
app.use('/static', express.static(__dirname + '/public'));
app.get('/', function(request, response) {
res.sendFile('/index.html')
});
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
var port = process.env.PORT || 80;
app.listen(port, function() {
console.log("Node app is running at localhost:" + port);
});
此外,我有这个已经产生问题的index.html代码
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css\index_style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<style>
body {
background-color: #F5F5F5;
}
.father {
margin-left: 20px;
margin-right: 20px;
}
.sinput {
role: textbox;
border: 2px solid #444;
padding: 5px 5px;
background-color: #FFFFFF;
}
</style>
</head>
所以,我想运行服务器并尽可能获取html文件(根http://domain.com的索引)以及css和javascripts文件。它也应该与Heroku PaaS兼容。
谢谢!
答案 0 :(得分:1)
在heroku上运行
在heroku上运行应用程序时,必须使用PORT环境变量中指定的端口。
请参阅http://devcenter.heroku.com/articles/node-js
var port = process.env.PORT || 3000;
app.listen(port, function() {
console.log('Listening on ' + port);
});
感谢&amp; CHEERS: - )
答案 1 :(得分:0)
我知道这个问题已经过时了,OP不需要答案,但万一它能帮助别人......
我碰到了这个,在我的情况下,这只是因为端口80是一个特权端口而且我不是root。对于那些不了解的人来说,前1024个TCP端口是特权的,这意味着启动它们的任何进程都具有root权限。这是为了防止盗贼在您的服务器上启动替代/虚假服务(如SSH)。如果端口23可用,您可以确定它是由具有root访问权限的人启动的。
&#39; sudo node app.js&#39;应该做的。
资源:
Why are ports below 1024 privileged?
https://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html
https://www.staldal.nu/tech/2007/10/31/why-can-only-root-listen-to-ports-below-1024/