需要 npm 包后的错误

Dei*_*ara 3 node.js npm raspberry-pi electron

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

## 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)
Run Code Online (Sandbox Code Playgroud)

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

在里面 /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
Run Code Online (Sandbox Code Playgroud)

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

Ali*_*ken 5

Fibers 是基于原生二进制代码构建的,它不是纯 javascript。Rasperry Pi 在 ARM 上运行,它不包含在预构建的二进制文件中。预构建的二进制文件支持 OSX (darwin)、linux 和 windows 的 32 位和 64 位体系结构。

这意味着您需要为您的系统手动构建 Fibers,而不是通过 NPM 安装它。Fibers 的 README有关于如何操作的明确说明。为了便于访问,我将它们包含在此处。请按照这些说明尝试让它在 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.