node.js报错“Error: EBUSY: resource busy or locked, stat“

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js报错“Error: EBUSY: resource busy or locked, stat“相关的知识,希望对你有一定的参考价值。

异常

Error: EBUSY: resource busy or locked, stat 'C:\\swapfile.sys'
    at Object.statSync (node:fs:1536:3)
    at D:\\NodeJs\\node-demo\\demo\\world.js:7:24
    at FSReqCallback.oncomplete (node:fs:188:23) {
  errno: -4082,
  syscall: 'stat',
  code: 'EBUSY',
  path: 'C:\\\\swapfile.sys'
}

Node.js v17.1.0

错误代码

var fs = require('fs');

var rootPath = 'C:\\\\';
fs.readdir(rootPath, function (err, files) {
    for (var i = 0; i < files.length; i++) {
        var p = rootPath + files[i];
        var stats = fs.statSync(p);
        console.log(rootPath + '是否是目录:' + stats.isDirectory())
    }
});

原因

提示Error: EBUSY: resource busy or locked, stat表示资源文件是繁忙的或者被锁定的,即C:\\swapfile.sys文件。但在C盘目录下并没有这个文件,即使是隐藏文件中也没有。但在可以通过Everything软件打开找到。
属于系统文件。

解决

我也不清楚该如何解决,网上的解决方法似乎无效,所以我只能屏蔽掉该文件。

正确代码

var fs = require('fs');

var rootPath = 'C:\\\\';
fs.readdir(rootPath, function (err, files) {
    for (var i = 0; i < files.length; i++) {
        var p = rootPath + files[i];
        // 当遇到swapfile.sys文件或者System Volume Information目录的时候跳过
        if (p.endsWith('swapfile.sys') || p.endsWith('System Volume Information')) {
            continue;
        }
        var stats = fs.statSync(p);
        console.log(rootPath + '是否是目录:' + stats.isDirectory())
    }
});

以上是关于node.js报错“Error: EBUSY: resource busy or locked, stat“的主要内容,如果未能解决你的问题,请参考以下文章

执行node.js脚本报错windows script host

Node.js 中 fs.renameSync 报错

node.js关于node.js,如何解决npm should be run outside of the Node.js REPL, in your normal shell报错?

node.js关于node.js,如何解决npm should be run outside of the Node.js REPL, in your normal shell报错?

node.js关于node.js,如何解决npm should be run outside of the Node.js REPL, in your normal shell报错?

关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施