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

Flo*_*ker 5 sync node.js node-fibers electron

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

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

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

而且它是正确的:在同步/ node_modules /光纤/斌/是没有目录名为Win32的x64的V8- 4.3,只有Win32的x64的V8- 4.2和重命名并没有解决问题(本来是太容易了).. .

  1. 我怎么解决这个问题?这怎么会发生?
  2. 最后一个数字(4.3)是什么意思?我猜是 windows,64 位,Javascript v8 引擎,然后呢?纤维版?

任何想法或提示?

更新:

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

更新#2:

  • 好吧,我发现电子基于 io.js 而不是节点。这解释了不同的 v8 版本。但仍然没有解决办法。使用最新的 io.js (2.3.3) 安装纤维时,它会测试 4.2 二进制文件,但电子需要 4.3 :(

更新 #3:

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

更新 #4:

解决方案:

  • 看我下面的回答。:)

Flo*_*ker 5

最后,我不得不自己编译纤维。如更新#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
Run Code Online (Sandbox Code Playgroud)

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

mkdir bin/win32-x64-v8-4.3
mv build/Release/fibers.node bin/win32-x64-v8-4.3/fibers.node
Run Code Online (Sandbox Code Playgroud)

现在同步就像一个魅力。