2016-12-29 247 views
0

首先,我想澄清一下,.mkdirSync(...)正在使用,而不是.mkdir(...),因为它必须在进一步操作发生之前完成,并且它仅在应用程序(服务器)初始化时发生。NodeJS fs.mkdirSync在Windows中返回EPERM错误

这里是我的代码,这似乎直截了当不够我:

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

但它在控制台需要的目录给这个错误,并创建:

Error: EPERM: operation not permitted, mkdir 'c:\my\dev\path\logs'

最容易混淆,这个工作只是一次,昨晚,我不知道为什么。我今天早上删除了这个目录来验证所谓的工作代码,并且现在错误出现了。任何想法,我需要做不同的工作,使它每次都能工作?我的解决方案还需要在Linux中工作。 (是的,我的开发环境与我的产品是不同的操作系统,目前有点超出我的控制范围。)

+0

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

回答

0

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

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

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