VS代码-错误:EPERM:不允许操作

时间:2019-11-05 08:30:45

标签: windows visual-studio-code file-permissions

在Windows 10上使用VS代码时,我遇到了很多权限问题。

  1. 尝试移动文件夹时:
    • 错误:EPERM:不允许该操作,请重命名“路径a”->“路径b”
  2. 删除文件夹时:
    • 该操作无提示失败,该文件夹已从解决方案资源管理器中删除,但仍保留在磁盘上。

有或没有管理员权限都无法使用。

我转到了包含我所有存储库的文件夹,将所有权设置为我,将完全控制权应用于所有经过身份验证的用户,但仍然无法使用。

enter image description here

有什么想法吗?

编辑:它有时确实起作用,这就是使它非常奇怪的原因

11 个答案:

答案 0 :(得分:9)

在VS Code中重命名或移动文件时遇到错误消息。 然后我注意到在Windows资源管理器中是相同的。

我使用Angular-CLI在Angular中进行开发,并在cmd中执行命令ng build --watch

当我停止watch命令时,此问题得以解决,并且我能够在VS Code中重命名和移动文件。

因此,我认为有一些进程可以保存您的文件。 希望对您有所帮助。

答案 1 :(得分:3)

我也有这个问题。在我的案例中,原因似乎是“Angular Language Service”扩展。

我在扩展程序窗格中删除了它,并能够立即重命名文件。

不幸的是,启用 Angular Language Server 后问题仍然存在。

答案 2 :(得分:2)

我在做 React 项目时遇到了同样的问题。起初,我以为我需要授予管理员权限,但这也不起作用。后来我发现我的项目托管在我的localHost上。因此,如果您的项目正在运行,我们将无法更改文件夹结构。在更新文件夹结构之前,您需要退出服务器。

解决方案:退出本地主机服务器并重试(对于 React 和 Angular 用户)。您也可以尝试重新启动 VScode。

答案 3 :(得分:1)

只需关闭 vscode 并在文件资源管理器中执行任何文件操作即可。我仍然使用这种方式重命名我的文件,也许这是一个未解决的错误。

答案 4 :(得分:1)

我在运行 Live Server extension 的实时服务器时遇到了 Error: EPERM: operation not permitted, rename。停止实时服务器后,可以再次进行重命名操作。

答案 5 :(得分:1)

对我有用的解决方案是以管理员身份打开 Vscode。

答案 6 :(得分:0)

如果您正在开发Firebase应用并先前运行过其Firebase仿真器,则可能会发生这种情况,因为当您按下Ctrl+C时,其仿真器可能会not completely shutdown。在Windows 任务管理器中也没有人提及可以终止哪个后台进程。

简而言之,当发生此问题时,必须使用某种 CLI Extension 来占用资源。

解决方案::重新启动PC,然后尝试重命名或删除文件夹,它应该可以正常工作。

答案 7 :(得分:0)

在我的情况下,这是一个嵌套文件夹。允许手动创建顶部文件夹并移动其内容...(导入仍会自动更新)

答案 8 :(得分:0)

如果您使用Jest VSCode扩展名并且测试文件位于要重命名的文件夹中,则在不禁用Jest运行程序的情况下可能无法正常工作。

答案 9 :(得分:0)

听起来很傻,但是由于某种原因设置了文件的“只读”标志时,也会发生此错误;就我而言,它是将整个VSCode文件夹从只读主机共享复制到VM。如果文件是只读的,则VSCode无法更改它,是否具有完整的管理员权限都没有关系。至于打开的文件,您可以使用SysInternals的Process Explorer工具来找出哪个进程具有对特定路径或文件的打开句柄。

答案 10 :(得分:0)

只是为了补充这堵答案,这显然是一个非常依赖于上下文的问题,我最初认为这与 vscode 或我的 Windows 权限有关,但实际上这是我的删除脚本的问题。

最初我的脚本是这样的:

Coordinator

这在我与这个项目的大部分时间里都有效......直到我决定在 fs.readdir("./content/products", (err, files) => { if (err) console.log(err); else { files.forEach((file) => { console.log(`Deleting: ${file}`); fs.unlink(`content/products//${file}`, (err) => { if (err) throw err; }); }); } }); 目录中创建子文件夹,此时节点试图取消链接目录并引发此错误。即使在重新启动我的电脑后,也无法弄清楚为什么会发生这种情况:/

我将删除脚本更改为

products

现在可以了:)