在Windows中出现EACCES:permission denied错误提示

20

今天晚上之前一切都运行良好,但是在我卸载了VSCode并重新安装后,尝试运行npm run app时,我遇到了这个问题,我不知道如何解决它。我已经尝试以管理员身份运行VSCode、命令提示符或Bash,但没有成功。我看到有很多修复此问题的方法,但大多数是针对Mac的,他们使用sudo修复了它,但我没有找到任何适用于Windows的有效方法,如果有人能帮助我解决这个问题,我会非常感激。

//this issue this my server code 
const express = require("express");
const app = express()
const port = process.env || 8080

app.get("/", (req, res) => {
  res.send("Hello");
});



app.listen(port,()=>{
  console.log("running on 8080")
})

这是完整的错误信息

events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EACCES: permission denied C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\BookStore\node_modules\.bin;C:\Users\Samarth's PC\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Samarth's PC\bin;C:\ProgramData\Miniconda3;C:\ProgramData\Miniconda3\Library\mingw-w64\bin;C:\ProgramData\Miniconda3\Library\usr\bin;C:\ProgramData\Miniconda3\Library\bin;C:\ProgramData\Miniconda3\Scripts;C:\Python27;C:\Python27\Scripts;C:\Users\Samarth's PC\AppData\Local\Programs\Python\Python38-32\python.exe;C:\Program Files\nodejs;C:\ProgramData\chocolatey\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\Yarn\bin;C:\Users\Samarth's PC\AppData\Local\Microsoft\WindowsApps;C:\Program Files\MongoDB\Server\4.0\bin;C:\Program Files\heroku\bin;C:\nvm;C:\Program Files\nodejs;C:\Python 3.8;C:\Users\Samarth's PC\AppData\Roaming\npm;C:\Users\Samarth's PC\AppData\Local\Yarn\bin;C:\Users\Samarth's PC\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl
    at Server.setupListenHandle [as _listen2] (net.js:1283:19)
    at listenInCluster (net.js:1348:12)
    at Server.listen (net.js:1447:5)
    at Function.listen (D:\BookStore\node_modules\express\lib\application.js:618:24)
    at Object.<anonymous> (D:\BookStore\app.js:11:5)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
    at Module.load (internal/modules/cjs/loader.js:812:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1327:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EACCES',
  errno: 'EACCES',
  syscall: 'listen',
  address: "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\npm-lifecycle\\node-gyp-bin;D:\\BookStore\\node_modules\\.bin;C:\\Users\\Samarth's PC\\bin;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Git\\usr\\local\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Users\\Samarth's PC\\bin;C:\\ProgramData\\Miniconda3;C:\\ProgramData\\Miniconda3\\Library\\mingw-w64\\bin;C:\\ProgramData\\Miniconda3\\Library\\usr\\bin;C:\\ProgramData\\Miniconda3\\Library\\bin;C:\\ProgramData\\Miniconda3\\Scripts;C:\\Python27;C:\\Python27\\Scripts;C:\\Users\\Samarth's PC\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe;C:\\Program Files\\nodejs;C:\\ProgramData\\chocolatey\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files (x86)\\Yarn\\bin;C:\\Users\\Samarth's PC\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files\\MongoDB\\Server\\4.0\\bin;C:\\Program Files\\heroku\\bin;C:\\nvm;C:\\Program Files\\nodejs;C:\\Python 3.8;C:\\Users\\Samarth's PC\\AppData\\Roaming\\npm;C:\\Users\\Samarth's PC\\AppData\\Local\\Yarn\\bin;C:\\Users\\Samarth's PC\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\Git\\usr\\bin\\vendor_perl;C:\\Program Files\\Git\\usr\\bin\\core_perl",
  port: -1
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bookstore@1.0.0 start: `node app.js "app"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bookstore@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Samarth's PC\AppData\Roaming\npm-cache\_logs\2019-12-20T16_43_00_131Z-debug.log
//Error log is here
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'start',
1 verbose cli   'app'
1 verbose cli ]
2 info using npm@6.12.0
3 info using node@v12.13.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle bookstore@1.0.0~prestart: bookstore@1.0.0
6 info lifecycle bookstore@1.0.0~start: bookstore@1.0.0
7 verbose lifecycle bookstore@1.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle bookstore@1.0.0~start: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\BookStore\node_modules\.bin;C:\Users\Samarth's PC\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Samarth's PC\bin;C:\ProgramData\Miniconda3;C:\ProgramData\Miniconda3\Library\mingw-w64\bin;C:\ProgramData\Miniconda3\Library\usr\bin;C:\ProgramData\Miniconda3\Library\bin;C:\ProgramData\Miniconda3\Scripts;C:\Python27;C:\Python27\Scripts;C:\Users\Samarth's PC\AppData\Local\Programs\Python\Python38-32\python.exe;C:\Program Files\nodejs;C:\ProgramData\chocolatey\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\Yarn\bin;C:\Users\Samarth's PC\AppData\Local\Microsoft\WindowsApps;C:\Program Files\MongoDB\Server\4.0\bin;C:\Program Files\heroku\bin;C:\nvm;C:\Program Files\nodejs;C:\Python 3.8;C:\Users\Samarth's PC\AppData\Roaming\npm;C:\Users\Samarth's PC\AppData\Local\Yarn\bin;C:\Users\Samarth's PC\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl
9 verbose lifecycle bookstore@1.0.0~start: CWD: D:\BookStore
10 silly lifecycle bookstore@1.0.0~start: Args: [ '/d /s /c', 'node app.js "app"' ]
11 silly lifecycle bookstore@1.0.0~start: Returned: code: 1  signal: null
12 info lifecycle bookstore@1.0.0~start: Failed to exec start script
13 verbose stack Error: bookstore@1.0.0 start: `node app.js "app"`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:210:5)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:210:5)
13 verbose stack     at maybeClose (internal/child_process.js:1021:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
14 verbose pkgid bookstore@1.0.0
15 verbose cwd D:\BookStore
16 verbose Windows_NT 10.0.18362
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start" "app"
18 verbose node v12.13.0
19 verbose npm  v6.12.0
20 error code ELIFECYCLE
21 error errno 1
22 error bookstore@1.0.0 start: `node app.js "app"`
22 error Exit status 1
23 error Failed at the bookstore@1.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]


你是否缺少 package.json 文件?你检查过 npm -v 或 node -v 吗? - Zhephard
我已经检查了npm和node版本,两者都是最新的。是的,我有package.json文件。我认为这个错误是由于一些权限问题造成的。 - Hashim aslam
考虑更改问题的标签,因为这并不意味着与node.js或npm有关,而是涉及操作系统权限管理。 - Zhephard
可能有经验使用Node的人更有可能提供解决方案,这是一个非常普遍的问题,但不幸的是我没有找到任何好的和清晰的解决方法,特别是在Windows上。无论如何,我会添加一些额外的标签。你知道在Windows中是否有类似于Mac中sudo的东西吗?@Zhephard - Hashim aslam
请参考以下链接:https://dev59.com/t2kw5IYBdhLWcg3wx9eC,了解如何在Windows中运行sudo命令。 - Zhephard
显示剩余2条评论
15个回答

115

大家好,如果你来到这里却找不到答案,我有一条建议可以帮助你解决问题。有时候某个端口上并没有运行任何应用程序,但是有些应用程序或者你的代码仍无法运行,解决方法如下:

  1. 以管理员身份打开 PowerShell。

  2. 使用下面的命令停止 winnat:

$ net stop winnat
  1. 使用以下命令重新启动 Winnat:
$ net start winnat

在许多情况下,这对我解决了问题,无需重新启动。希望它也能帮助你。

编辑: 我深入研究了这个问题,并发现问题是端口没有以正确的方式关闭,这很容易导致终止终端窗口或运行在该端口上的应用程序。


10
这个在2021年仍然有效。非常感谢。 - Martin Dimitrov
4
刚在 Windows 11 下成功地使用了它 - 我自己永远不会找到那个... - marzetti
4
2022 年也可以使用。谢谢。 - Shockch4rge
1
请问,您能提供有关winnat的更多细节吗?我非常好奇。 - LSafer
1
可以在2023年使用!然而,问题是为什么我们首先要做这件事。 - AsGoodAsItGets
可能的影响是,如果您正在使用它们,WSL2 将无法工作或 Hyper-V 将无法使用。https://github.com/microsoft/WSL/issues/9418 - Janis Veinbergs

10

在我的环境文件中,我添加了一个本不应该添加的分号。我已经写下了:

PORT=5000;

而不是

PORT=5000

1
一样的问题。自动格式化在不该放置分号的地方添加了一个分号。 - Patrick
哇,终于成功了,非常感谢!! - Shashank KR
这对我来说是个问题! - Arbiter

5

对于我来说,当Windows 10有一些待处理的更新时,这个问题会不断地出现。为了解决这个问题,我需要安装所有待处理的更新并在此过程中重新启动1-2次。


1
和我一样。更新会阻塞某些端口。我在Windows中找不到任何隐藏的端口阻止规则。 - Marcel GJS

2

错误:监听EACCES:拒绝许可

这可能是因为端口或您的本地主机正在运行其他应用程序。人们没有回答的一个可能的错误是本地计算机上的活动IIS服务器。在我的情况下,这是错误的来源。所以我停止了IIS服务器来释放那个本地主机,然后它对我起作用了。如果有人面临这个问题,可以尝试这个选项。


那对我起作用了。将端口从80改为8080,它就立刻启动了。 - Sam

1

就像我的情况一样,我想在编码过程中留下注释,所以在这之前,我的.env文件中是这样的一行:

PORT=5000// 服务器起始端口

但是后来我删掉了注释,这个问题就不再存在了。

现在我的.env文件中的这一行看起来是这样的:

PORT=5000

原因是.env文件不是JavaScript文件,而是文本文件。因此,在使用来自.env文件的变量时,它首先将端口号视为“5000// 服务器起始端口”。因此,在.env文件中,我们只需保留属性和值即可。

祝好!


1
我发现在.env文件中放置分号会导致问题。 现在,我已经修复了它。 谢谢。

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

0

我在互联网上看到了多种解决方案,但实际上这是我犯的一个非常简单的错误。

在.env文件中,我写了端口号,如下所示:

PORT = 5000;

但它应该像这样

PORT = 5000

.env文件末尾不要加分号 ;


0

0

我已经禁用了防病毒软件的实时保护,问题已经解决。


0
如果有人需要帮助,我分享一下我的经验。我的问题是由于我尝试添加一个太小的端口(999)而导致失败,你可以尝试更改端口,看看是否可以通过这种方式解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接