【问题标题】:Getting Error EBUSY: resource busy or locked出现 EBUSY 错误:资源繁忙或锁定
【发布时间】:2019-03-09 19:43:36
【问题描述】:

尝试运行 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 并重新安装节点模块来修复。

请帮我解决这个问题。

【问题讨论】:

    标签: node.js npm raspberry-pi3


    【解决方案1】:

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

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

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

    • 也有人说是反恶意软件造成的,建议在运行程序时禁用它。

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

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

    【讨论】:

    • @SyedMuhammadDanishIqbal 可能您的端口 4 很忙。尝试更改 GPIO 引脚。比如说 21 或 23 或任何其他你喜欢的
    • @SyedMuhammadDanishIqbal 不要忘记更换 LED 引脚
    【解决方案2】:
    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();
    });
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        正常工作后

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            如果您在 Windows 上

            尝试以管理员身份运行 bash 窗口。

            例如,就我而言,我使用的是 git bash。

            在窗口“Gitbash”(或任何其他命令行窗口)上搜索 -> 右键单击​​ -> 以管理员身份运行。为我工作。

            【讨论】:

              【解决方案7】:

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

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

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

              【讨论】:

                【解决方案8】:

                只需关闭所有内容,包括您的 Visual Studio 或您正在使用的任何应用程序,然后重新启动 ng serve 或 ng build,您的服务器就会运行

                【讨论】:

                  【解决方案9】:

                  问题的另一个原因可能是您的 npm 包包含一个不存在的包。在我的情况下,我的 package.json 中包含一个私有存储库 - 但它指向一个不存在的 git 标签/版本。修复此错误并运行

                  npm install
                  

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

                  npm ci
                  

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

                  【讨论】:

                    猜你喜欢
                    • 2019-08-08
                    • 2021-12-21
                    • 1970-01-01
                    • 1970-01-01
                    • 2022-01-18
                    • 2019-01-03
                    • 2021-08-21
                    • 2020-09-08
                    相关资源
                    最近更新 更多