NodeJS fs.mkdirSync返回Windows

时间:2016-12-29 17:39:02

标签: node.js windows file-permissions fs

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

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

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

但它在控制台上发出此错误,创建所需目录:

  

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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