【问题标题】:NodeJS fs.mkdirSync returning EPERM error in WindowsNodeJS fs.mkdirSync 在 Windows 中返回 EPERM 错误
【发布时间】:2017-05-14 01:40:31
【问题描述】:

首先我要澄清的是,.mkdirSync(...) 被使用而不是 .mkdir(...),因为它必须在进一步操作发生之前完成,并且它只在应用程序(服务器)初始化时发生一次。

这是我的代码,对我来说似乎很简单:

var fs = require('fs');
try {
  fs.mkdirSync('./logs');
} catch(err) {
  console.log(err);
}

但它在控制台给出了这个错误,没有创建所需的目录:

错误:EPERM:不允许操作,mkdir 'c:\my\dev\path\logs'

最令人困惑的是,这在昨晚只起作用了一次,我不知道为什么。我今天早上删除了目录以验证所谓的工作代码,现在错误出现了。知道我需要做些什么来让它每次都能正常工作吗?我的解决方案也需要在 Linux 中运行。 (是的,我的开发环境与我的生产环境是不同的操作系统,目前它有点超出我的控制范围。)

【问题讨论】:

  • 尝试以管理员身份运行 CMD 并重新启动您的代码。应该管用。这绝对是权限问题。

标签: node.js windows file-permissions fs


【解决方案1】:

经过一番调查,我注意到我认为已被删除的 .../logs 目录间歇性出现和消失,甚至以管理员身份运行 CMD 的管理员帐户也无法查看或修改关于幻影目录的任何内容,但它确实出现在dir 命令中。我能够间歇性地在 CMD 中看到带有 dir 的目录、带有 ls -l 的 Git Bash(它显示了用于 .../logs 的 drwxr-xr-x)以及在文件资源管理器中。关闭所有可能与目录交互的正在运行的应用程序没有任何效果。

我重新启动了我的电脑,一切又开始工作了。

我意识到这不是一个很有帮助的 StackOverflow 问题/答案。不过,这次冒险总体上影响了我对 Windows 操作系统的看法。也许有人可以从中吸取教训。文件和目录权限通常不应该受到系统重启的影响,如果文件是 ENOENT,操作系统应该知道是否是这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2017-08-07
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多