需要npm包后的错误

时间:2017-07-19 23:04:13

标签: 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)

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

/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以及它来自哪里?

2 个答案:

答案 0 :(得分:1)

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

这意味着您需要为系统手动构建光纤,而不是通过NPM安装。 The README for Fibers明确说明了如何执行此操作。为方便访问,我将它们包含在此处。请按照这些说明尝试在Raspberry Pi / ARM上运行它。

从源

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

注意:节点光纤使用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

答案 1 :(得分:0)

我在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/

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

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

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