Nodejs(Sync)找不到光纤二进制文件

时间:2015-07-03 23:46:06

标签: node.js sync electron node-fibers

我见过类似的问题,但没有真正的解决方案对我有用(大多数用户只是重新安装光纤或流星(我不使用流星))。

我已将nodejs模块Sync添加到我的nodejs 0.12.6项目中。它的依赖性是通过Sync自动安装的Fibers模块。现在我想通过require加载同步,但它失败并显示消息

  

...找不到/win32-x64-v8-4.3/fibers.node

这是正确的:在sync / node_modules / fibers / bin /中没有名为win32-x64-v8- 4.3的目录,只有win32-x64-v8- 4.2 并且重命名并没有解决问题(本来就太容易了)......

  1. 我该如何解决这个问题?怎么会发生这种情况?
  2. 最后一个号码(4.3)的含义是什么?我猜它是windows,64bit,Javascript v8引擎,然后呢?纤维版?
  3. 任何想法或提示?

    更新

    • 我尝试将节点升级到0.12.6,但没有任何改变。
    • 我发现4.3是关于什么的,它是v8版本。好吧,当用电子运行我的应用程序时,它是 v8:'4.3.61.21'。使用节点检查版本时,它是3.28。那么它可能是电子“故障”?

    更新#2:

    • 好的,我发现电子是基于io.js而不是节点。这解释了不同的v8版本。但仍然没有解决方案。当安装具有最新io.js(2.3.3)的光纤时,它测试4.2二进制,但电子需要4.3 :(

    更新#3:

    • 即使使用与电子相同的io.js版本2.3.1,它也只会安装4.2二进制文件。

    更新#4:

    解决方案:

    • 请参阅下面的答案。 :)

2 个答案:

答案 0 :(得分:4)

最后,我必须自己编译光纤。如更新#4中所述,我之前尝试过。但是node-gyp总是失败,我没有注意到我必须自己链接到新的二进制文件...

cd ~/my-project-root/
npm install sync
cd ./node_modules/sync/node_modules/fibers
node-gyp configure
HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell

然后我创建了丢失的目录,并在那里移动了新的二进制文件:

mkdir bin/win32-x64-v8-4.3
mv build/Release/fibers.node bin/win32-x64-v8-4.3/fibers.node

现在Sync就像魅力一样。

答案 1 :(得分:1)

您需要使用electron-rebuild工具根据您正在使用的Electron版本重建原生模块