【问题标题】:run node.js webbapp on 80 port on windows在 Windows 的 80 端口上运行 node.js webbapp
【发布时间】:2013-10-02 13:08:20
【问题描述】:

我需要让我的本地 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 上运行我的应用程序

【问题讨论】:

    标签: windows node.js port host


    【解决方案1】:

    我的 Windows 10 电脑也遇到了这个问题。

    我按照此链接 (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 时,我的节点应用程序仍然会启动。

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

    【讨论】:

      【解决方案2】:

      和@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 在启动时不启动,我很好。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

            • 您能否提供一下,您究竟是如何停止 IIS 服务器的?
            猜你喜欢
            • 2012-02-12
            • 2011-08-31
            • 2015-09-28
            • 1970-01-01
            • 2014-08-16
            • 2012-07-01
            • 2012-02-06
            • 2011-06-16
            • 1970-01-01
            相关资源
            最近更新 更多