2016-12-29 250 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,操作系統應該知道是否是這種情況。