我有一个在Windows上的WebStorm中完美运行的项目。在Mac上尝试相同时,我在使用默认(443)端口
尝试https时出现EACCES错误到处玩,我注意到正在运行
sudo node app.js
效果很好。 在没有sudo的情况下做同样的事情会引发EACCES。我无法从WebStorm运行项目,因为它运行没有sudo访问的节点
当然,尝试任何更高端口(例如3000)都可以正常工作。但是我工作了一段时间,在这种情况下所有环境都需要443端口。
我知道这是管理员权限。在我的IDE中运行时,有什么方法可以使它工作?像“总是以管理员身份运行节点”之类的东西?我是Mac的新手,所以不知道该怎么做。
例外情况如下:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at Server.listen (net.js:1138:5)
at Object.startServer (/Users/xxxxxx/trunk/server.js:112:21)
at init (/Users/xxxxxx/trunk/app.js:12:12)
at Object.<anonymous> (/Users/xxxxxx/trunk/app.js:15:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
以防万一,启动服务器的代码:
var options = {
key: fs.readFileSync("./server/certificate/xxxxxx.key").toString(),
cert: fs.readFileSync("./server/certificate/xxxxxx.cert").toString()
};
var securedServer = https.createServer(options, function (req, res)
{
app.handle(req, res);
});
securedServer.listen(config.securePort); //443 in this case
同样,此代码在Windows和Mac中都可以使用root访问权限。所以,这不是问题的原因。
非常感谢您的帮助!
答案 0 :(得分:3)
提交请求以启用从WebStorm运行node.js作为sudo:http://youtrack.jetbrains.com/issue/WEB-11972
同时,在Mac上的其他端口运行应用程序并将端口转发配置为:
sudo ipfw add 101 fwd 127.0.0.1,8443 tcp from any to me 443
答案 1 :(得分:0)
我可以建议使用端口转发。有关可能的解决方法,请参阅https://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-user 另一种可行的方法是将WebStorm本身作为sudo运行......
无论如何,请随意提交一个请求,以便将节点作为sudo运行到youtrack,http://youtrack.jetbrains.com/issues/WEB