ExpressJS(初学者)

时间:2016-03-13 09:02:34

标签: node.js express heroku backend

我无法让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兼容。

谢谢!

2 个答案:

答案 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/