gpt4 book ai didi

javascript - 为什么 Node mkdirSync() 会抛出异常?

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:19 28 4
gpt4 key购买 nike

我在 Windows 8 上运行 Node v4.2.0。我发现 fs.mkdirSync() 偶尔会无缘无故地抛出 EPERM。

我设法使用此测试代码重新创建它,并将其保存在文件 bug.js 中。

var fs = require("fs");
var i;
for (i = 0; i < 100000; i += 1) {
fs.mkdirSync("xx");
fs.rmdirSync("xx");
}

这是我偶尔得到的跟踪:

C:\WIP>node bug
C:\WIP\bug.js:0

Error: EPERM: operation not permitted, mkdir 'C:\WIP\xx'
at Error (native)
at Object.fs.mkdirSync (fs.js:799:18)
at Object.<anonymous> (C:\WIP\bug.js:4:8)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:134:18)
at node.js:961:3

这种情况并不总是发生,即使是 100000 次循环也是如此。事实上,它是一个狡猾的野兽 - 如果我运行 bug.js 几次,它似乎会降低遇到异常的可能性。当我 try catch 异常时,我发现它是在循环的数千次成功迭代之后发生的。

为什么会出现异常?有什么办法可以避免异常吗?

最佳答案

我在运行 Node v4.0.0 时遇到了同样的错误,如果我在 Windows 资源管理器中打开该文件夹,这种情况似乎会更频繁地发生。

fs.js:747
return binding.mkdir(pathModule._makeLong(path),
^
Error: EPERM, operation not permitted 'C:\path\folder'
at Error (native)
at Object.fs.mkdirSync (fs.js:747:18)
at Object.<anonymous> (C:\path\script.js:88:4)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3

我降级到 Node v0.12.8 并且相同的过程运行顺利。

关于javascript - 为什么 Node mkdirSync() 会抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33244641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com