18

我需要让我的本地 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 端口上运行应用程序,则不会重现此错误,因此取决于端口。

我应该怎么做才能在 Windows 7 的端口 80 上运行我的应用程序

4

5 回答 5

22

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

于 2013-09-26T14:13:03.687 回答
4

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

于 2013-09-26T20:09:17.200 回答
1

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

于 2016-05-25T21:49:33.827 回答
1

我在我的 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在另一个命令提示符下再次执行,我没有以管理员身份运行它,并得到了这个错误对话

在此处输入图像描述

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

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

在此处输入图像描述

但是现在当我运行npm start我的节点应用程序时仍然会启动。

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

于 2019-10-18T19:00:12.580 回答
0

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

就我而言,我可以}).listen(80);但不能}).listen(80, "0.0.0.0");我的服务器无法从本地主机访问。当我进行调查时,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没有在启动时启动,我很好。

于 2017-02-24T16:26:27.067 回答