EACCES:permission denied 0.0.0.0:3000 in Windows Next js

tcbh2hod  于 2023-10-18  发布在  Windows
关注(0)|答案(6)|浏览(339)

当我尝试用yarn dev启动下一个js服务器时,它会抛出这个错误。我需要重新启动整个系统才能让它工作。我在Windows上运行它。这需要很长时间。

Error: listen EACCES: permission denied 0.0.0.0:3000
    at Server.setupListenHandle [as _listen2] (net.js:1301:21)
    at listenInCluster (net.js:1366:12)
    at doListen (net.js:1503:7)
    at processTicksAndRejections (internal/process/task_queues.js:81:21) {
  code: 'EACCES',
  errno: -4092,
  syscall: 'listen',
  address: '0.0.0.0',
  port: 3000
}
zzoitvuj

zzoitvuj1#

运行此.bat文件

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
net stop winnat
net start winnat
exit
ahy6op9u

ahy6op9u2#

对很多人来说,windows上的“解决方案”似乎是禁用虚拟以太网适配器(特别是当你使用docker时)。也可能是另一个程序正在使用同一个端口,您可以通过使用netstat -a找到它。
我禁用所有未使用的vEthernet适配器并重新启动。在某种程度上,它又神奇地起作用了。设置可以在这里找到:控制面板>网络和Internet >网络连接
来源:https://github.com/BrowserSync/browser-sync/issues/1705#issuecomment-508846475
(老实说,这是我很长一段时间以来遇到的最烦人的bug,也是我切换到Linux的原因)

xesrikrc

xesrikrc3#

我不确定这是不是同一个问题,但我的错误是:

Error: listen EACCES: permission denied 0.0.0.0:3000
... Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1357:8)
    at processTicksAnd

this修复了它:Restarting the service "Host Network Service"

bvn4nwqk

bvn4nwqk4#

对我来说,在那个端口上运行的是Grafana。只要打开http://localhost:3000,也许你会发现那里正在运行什么,然后在 * 服务 *(Windows)处停止它。

bq8i3lrv

bq8i3lrv5#

在我的情况下,错误发生是因为使用的端口属于Hyper-V的保留端口。
当我重新启动计算机时,这个端口范围会发生变化,所以有时我会得到错误,有时我不会。
当我正在构建多个Nextjs应用程序时,突然我无法启动其中一个。我试图提升CMD到管理员,但访问被拒绝错误,甚至试图找到与端口相关的进程,但没有。
我尝试了多个端口,如3001,3002,3006,3009等,但没有工作。
错误如下:启动Nextjs应用程序时出错,EACCES null:3001

为了检查Windows保留的端口,您可以使用cmd/powershell:
netsh interface ipv4 show excludedportrange protocol=tcp

该问题描述如下:https://github.com/microsoft/WSL/issues/5514

一般工作流程(在注解554587817中):https://github.com/docker/for-win/issues/3171#issuecomment-554587817
**快速解决方法:**选择不属于保留范围的端口

npm run dev -- -p 4000

通过编辑dev在json包文件的scripts部分添加端口说明符,如下所示:
"dev": "next dev -p 4000"
现在它起作用了:

这在post here中也有提到。

ws51t4hk

ws51t4hk6#

EACESS只在你没有访问你想使用的端口的权限时抛出,不像Linux,windows可能有更多需要管理权限的端口,3000可能只是其中之一,即使它没有被使用,所以增加你的端口号一点点,再加一个零。
正如另一位用户所提到的-最多3016用于管理目的,因此您可以使用它们,您可以使用的3000附近的第一个地址是3017

C:\Users\thisisMe> netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      2917        3016
      3047        3146
      5357        5357
     14645       14744
     48752       48851
     49052       49151
     49252       49351
     50000       50059     *

* - Administered port exclusions.

相关问题