出现错误 EBUSY:资源繁忙或已锁定

Getting Error EBUSY: resource busy or locked

尝试 运行 一个 Nodejs 应用程序来测试 Raspberry 3 B + Gpio Onoff 模块,但是当我尝试 运行 应用程序时出现此错误

fs.js:114
throw err;

Error: EBUSY: resource busy or locked, write
at Object.writeSync (fs.js:568:3)
at Object.writeFileSync (fs.js:1199:26)
at new Gpio (/home/pi/Desktop/pitesting/node_modules/onoff/onoff.js:96:10)
at Object.<anonymous> (/home/pi/Desktop/pitesting/blink.js:3:7)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)

这是我的应用代码

var onoff = require('onoff');
var Gpio = onoff.Gpio,
  led = new Gpio(4, 'out'),
  interval;
interval = setInterval(function () {
  var value = (led.readSync() + 1) % 2;
  led.write(value, function () {
    console.log("Changed LED state to: " + value);
  });
}, 2000);
process.on('SIGINT', function () {
  clearInterval(interval);
  led.writeSync(0);
  led.unexport();
  console.log('Bye, bye!');
  process.exit();
});

已尝试通过更新和升级 apt 并重新安装节点模块进行修复。

请帮我解决这个问题。

var onoff = require('onoff');
var Gpio = onoff.Gpio,
    led = new Gpio(4, 'out'),
    interval;
interval = setInterval(function () {
    var value = (led.readSync() + 1) % 2;
    led.write(value, function () {
        console.log("Changed LED state to: " + value);
    });
}, 2000);
process.on('SIGINT', function () {
    clearInterval(interval);
    led.writeSync(0);
    led.unexport();
    console.log('Bye, bye!');
    process.exit();
});

GitHub 关于这个问题有很多答案。

  • 有人说 npm cache clean 在终端上执行这个命令解决了问题。

  • 其他人建议删除整个目录你的应用程序所在的文件夹并重新安装包然后尝试运行程序。

  • 也有人说是杀毒软件引起的,建议在运行程序中禁用。

GitHub 问题 link: https://github.com/npm/npm/issues/13461

如果它不能解决问题,只需将 GPIO 引脚更改为编码中的 23,并且不要忘记将 LED 从 4 物理更换为 23。

有人说npm cache clean这个命令不能正常工作。

我们尝试卸载 nodejs 并重新安装 nodejs

正常工作后

.expo文件夹中找到packager-info.json文件并删除。现在通过 expo start 命令重新启动它。

如果你在 windows.

尝试 运行 您的 bash window 作为管理员。

例如,在我的例子中,我使用的是 git bash.

搜索 windows“Gitbash”(或任何其他 command-line window)-> Right-click -> 运行 作为管理员。为我工作。

我知道这是大麦的建议,因为它很明显,但我花了一个多小时在这上面然后重新启动我的计算机,问题已解决!

提醒一下,最明显的解决方案有时是正确的解决方案。

关于此问题的所有其他解决方案对我都不起作用。可能是因为我的问题是日志文件被锁定,这使我根本无法使用 npm。日志文件甚至没有出现在它应该在的目录中。

只需关闭所有内容,包括您的 visual studio 或您正在使用的任何应用程序,然后再次启动 ng serve 或 ng build,您将获得您的服务器 运行

当您尝试写入在编辑器中打开的文件时,可能会出现此问题

问题的另一个原因可能是您的 npm 包包含一个不存在的包。在我的例子中,我有一个包含在我的 package.json 中的私有存储库 - 但它指向一个不存在的 git tag/version。修复此错误和 运行

npm install

(忽略任何错误)为我修复了它。为了省钱我运行

npm ci

之后,但这可能是不必要的。