在Windows上的80端口上运行node.js web app

时间:2013-09-26 13:59:42

标签: windows node.js port host

我需要让我的本地node.js webapp听 80 端口。现在,如果在端口80上运行我的应用程序,我会得到这个错误

events.js:72
        throw er; // Unhandled 'error' event
          ^
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1127:5)
    at Object.<anonymous> (\scripts\server.js:23:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10) 

如果在4321端口上运行app,则此错误不会再现,因此它取决于端口。

如何才能在Windows 7上的端口80上运行我的应用

5 个答案:

答案 0 :(得分:17)

在Windows机器上,您的80端口可能正忙于IIS服务器。尝试先使用端口80运行node.js webapp后停止iis。

答案 1 :(得分:4)

80端口上的IIS肯定是个问题。而不是转向它,你可以尝试IIS节点。 http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx 可能你根本不需要在本地开发中使用端口80,但是如果你在Windows机器上进行生产,IIS节点是负载平衡的不错选择。

答案 2 :(得分:1)

叹息 - 我刚刚发现SKYPE.EXE潜伏在我的端口80和443上。使用netstat -anb查看阻止node.exe接受这些端口上的套接字的内容......

答案 3 :(得分:0)

和@jimme一样,我的问题是因为我安装了skype客户端,用于在同一台开发机器上测试另一个项目。

在我的情况下,我可以}).listen(80);但不能}).listen(80, "0.0.0.0");除了localhost之外,我的服务器无法访问。当我通过netstat -abn进行调查时,我可以看到有些东西正在侦听该端口,但是没有进程信息。我很幸运的信息是“Windows试图通过不将其调度机制绑定到端口80来尝试容纳这种不灵活的服务,直到有些事情要求它为止。”这就是为什么你最初不一定会看到问题,但可能会遇到这个问题在进行某种更新或配置更改之后。),“https://serverfault.com/questions/65717/port-80-is-being-used-by-system-pid-4-what-is-that指向文章https://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/

当我看到那条重要的信息和@jimme的回答时,我记得我还安装了Skype。我只是让skype在启动时没有启动,我很好。

答案 4 :(得分:0)

我在Windows 10 PC上也遇到了这个问题。

我在以管理员身份打开并获得以下输出的命令提示符中,遵循此链接(net stop http):https://stackoverflow.com/a/16243333上的命令:

C:\Users\<user>\Documents\project>net stop http 

The following services are dependent on the HTTP Service service. Stopping the HTTP Service service will also stop these services.

 World Wide Web Publishing Service    
 SSDP Discovery    
 Print Spooler    
 Function Discovery Provider Host

Do you want to continue this operation? (Y/N) [N]: y 

The World Wide Web Publishing Service service is stopping. 
The World Wide Web Publishing Service service was stopped successfully.

The SSDP Discovery service is stopping. 
The SSDP Discovery service was stopped successfully.

The Print Spooler service is stopping. 
The Print Spooler service was stopped successfully.

The Function Discovery Provider Host service is stopping. 
The Function Discovery Provider Host service was stopped successfully.

The HTTP Service service was stopped successfully.

C:\Users\<user>\Documents\project>

然后我在另一个命令提示符下再次执行npm start,而我没有以管理员身份运行它,并收到了此错误对话框

enter image description here

我单击“确定”将其关闭,然后在浏览器中键入localhost并启动了我的应用!

奇怪的是,我回到了 TaskManager->服务选项卡,然后重新启动了所有已停止的四个服务。在下面的屏幕快照中,您可以看到以前已停止的一项服务(请查看“描述”列),但现在已重新启动:

enter image description here

但是现在当我运行npm start时,我的节点应用仍然可以启动。

因此,对我来说似乎有点奇怪,在我停止这些服务之前,我无法启动我的应用程序。停止它们后,我现在可以启动我的应用程序。但是即使重新启动这些服务,我仍然可以启动我的应用。