我创建并启动这样的应用程序:
express -s -t ejs
npm install express
npm install ejs
node app.js
它可以工作(在端口 3000 上)。但是当我将端口更改为 80 时,运行 node app.js
会输出:
node.js:198
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Cannot call method 'getsockname' of null
at HTTPServer.address (net.js:746:23)
at Object.<anonymous> (/var/www/thorous/app.js:35:67)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.<anonymous> (module.js:470:10)
at EventEmitter._tickCallback (node.js:190:26)
这也适用于我的笔记本电脑,但不适用于我的 Amazon EC2 实例,其中端口 80 是开放的。 可以弄清楚是什么问题。有什么建议吗?
最佳答案
如果您真的想这样做,您可以将端口 80 上的流量转发到 3000。
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
关于Node.js + Express : app won't start listening on port 80,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929563/