【问题标题】:Node.js and File System on Windows - EBUSY errorWindows 上的 Node.js 和文件系统 - EBUSY 错误
【发布时间】:2012-05-25 01:21:30
【问题描述】:

我是 Node.js 的新手,我正在尝试找出以下代码有什么问题。

var fs = require('fs');
var dir = "C:\\";
var files = fs.readdirSync(dir);
for (var i = 0; i < files.length; i++) {
    var name = fs.statSync(dir + files[i]).name;
}

运行此代码时出现错误:

Error: EBUSY, resource busy or locked 'C:\hiberfil.sys'
    at Object.statSync (fs.js:424:18)
    at Object.<anonymous> (S:\start.js:7:19)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Array.0 (module.js:484:10)
    at EventEmitter._tickCallback (node.js:190:38)

【问题讨论】:

标签: windows node.js filesystems


【解决方案1】:

Hiberfil.sys 是一个将休眠数据保存在磁盘上的系统文件,你不能通过普通权限读取它,它是超级机密的,因为它保存了磁盘上的所有内存信息。

【讨论】:

  • 只是在这里扔一个便条以供参考:使用 try/catch 解决了我与此错误消息有关的问题。 try { var name = fs.statSync(path); } -- 如果由于某种原因无法读取文件,它会忽略它,然后继续。 Node 确实帮助我理解了 JS 中错误处理的价值。
  • @Adrian 能否请您提供一个完整的解决方案示例,谢谢提前
  • @haltman 我在五年多前发布了这个。我不记得我的评论的上下文或导致它的发现,另外我在过去两年中没有使用 JavaScript 或 Node。我认为我的观点是在尝试读取目录时使用 try/catch 有助于避免无意义的错误,例如尝试读取受保护的系统文件。将 fs.statSync 调用包装在 try 块中,并捕获它抛出的任何错误,而不是让它们使您的应用崩溃
【解决方案2】:

在没有找到足够答案的情况下遇到类似问题后:

我已经通过搜索循环依赖修复了它。

修复后,我能够正常运行一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多