【问题标题】:Errors after requiring npm package需要 npm 包后的错误
【发布时间】:2017-12-25 10:15:39
【问题描述】:

我正在尝试在树莓派上运行一个电子应用程序。当我使用 var TJBot = require('tjbot')在我的代码中导入一个node包,出现如下错误:

## There is an issue with `node-fibers` ##
`/Users/apple/app/node_modules/asyncawait/node_modules/fibers/bin/darwin-x64-53/fibers.node` is missing.

Try running this to fix the issue: /Users/apple/app/node_modules/electron/dist/Electron/
app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper

/Users/apple/app/node_modules/
asyncawait/node_modules/fibers/build

Uncaught Error: Missing binary. See message above.
    at Object.<anonymous> (/Users/apple/app/node_modules/asyncawait/node_modules/fibers/fibers.js:20:8)
    at Object.<anonymous> (/Users/apple/app/node_modules/asyncawait/node_modules/fibers/fibers.js:26:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)

如果我删除这条线或不使用电子运行它,一切正常,所以我不确定这个节点库是否有问题或者它是由电子引起的

/Users/apple/app/node_modules/asyncawait/node_modules/fibers/bin/里面我可以看到

darwin-ia32-46 darwin-x64-48  linux-ia32-48  repl           win32-x64-46
darwin-ia32-48 darwin-x64-51  linux-x64-46   win32-ia32-46  win32-x64-48
darwin-x64-46  linux-ia32-46  linux-x64-48   win32-ia32-48

为什么我需要darwin-x64-53,它来自哪里?

【问题讨论】:

    标签: node.js npm raspberry-pi electron


    【解决方案1】:

    我在 Linux mint 上遇到了同样的问题,我解决了如下问题; 基于github source for node-fibers关于从源安装的部分;

    git clone git://github.com/laverdet/node-fibers.git
    cd node-fibers
    npm install
    

    然后我创建了一个新目录;

    mkdir /usr/local/lib/node_modules/iron-meteor/node_modules/fibers/bin/linux-x64-57/
    

    然后我将fibers.node复制到新创建的目录中;

    cp bin/linux-x64-57-glibc/fibers.node /usr/local/lib/node_modules/iron-meteor/node_modules/fibers/bin/linux-x64-57/
    

    然后一切都对我有用。您可能需要调整您的权限。

    【讨论】:

      【解决方案2】:

      Fibers 是根据本地二进制代码构建的,它不是纯 JavaScript。 Rasperry Pi 在 ARM 上运行,它不包含在预构建的二进制文件中。预构建的二进制文件支持 OSX (darwin)、linux 和 windows 的 32 位和 64 位架构。

      这意味着您需要为您的系统手动构建 Fibers,而不是通过 NPM 安装它。 The README for Fibers 有明确的说明。为了便于访问,我将它们包括在这里。请按照这些说明尝试让它在 Raspberry Pi / ARM 上运行。

      从源安装

      • git clone git://github.com/laverdet/node-fibers.git
      • cd node-fibers
      • npm install

      注意:node-fibers 使用node-gyp 建筑。要手动调用构建过程,您可以使用node-gyp rebuild。 这会将编译后的扩展名放在build/Release/fibers.node 中。然而, 当您执行require('fibers') 时,它会期望模块在其中,因为 例如,bin/linux-x64-v8-3.11/fibers.node。可以手动放模块 每次构建时都在这里,或者您可以使用包含的构建脚本。任何一个 npm installnode build -f 将为您执行此操作。如果你要成为 在节点光纤上进行黑客攻击,可能值得先做node-gyp configure 然后对于后续的重建,您可以执行 node-gyp build 这将 比完整的 npm installnode-gyp rebuild 更快。

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多