我有一个节点 webkit 应用程序,它使用 mdns 模块从 Mac(使用 Mavericks)发布 Bonjour 服务。当我运行服务器代码时node server.js
一切正常,但是当运行使用相同服务器代码的节点 webkit 应用程序时,我收到此错误:
"Uncaught Error: dlopen(/Users/me/myfolder/node_modules/mdns/build/Release/dns_sd_bindings.node, 1): no suitable image found. Did find:
/Users/me/myfolder/node_modules/mdns/build/Release/dns_sd_bindings.node: mach-o, but wrong architecture", source: /Users/me/myfolder/node_modules/mdns/lib/dns_sd.js (35)
显然,当您安装该mdns
模块时,npm
它是为 x86 架构构建的,而我需要它用于 i386,因为 node-webkit 是为 i386 构建的(我通过阅读此线程发现了这一点:http ://forums.macrumors.com/showthread .php?t=879780)。您可以通过在终端中运行它来验证它:
$ lipo -info /Applications/node-webkit.app/Contents/MacOS/node-webkit
Non-fat file: /Applications/node-webkit.app/Contents/MacOS/node-webkit is architecture: i386
我发现这个链接建议了一个解决方案:https ://github.com/rogerwang/node-webkit/issues/296用于另一个模块(节点代理)。建议的说明是:
I managed to build a 32-bit version of node-proxy as follows:
I installed nw-gyp
I ran nw-gyp configure --target=0.3.6
I edited the generated file nodeproxy.target.mk in the build directory by replacing -arch x86_64by -arch i386
I ran nw-gyp build
但是由于我不习惯手动构建节点模块,在按照说明进行操作时,我不清楚应该在哪个文件夹中运行这些步骤(我假设它在里面的模块文件夹中node_modules
:a)当我安装 nw-gyp我没有得到全局使用的 nw-gyp 命令(我猜说明中缺少 -g 选项)b)使用反而gyp configure --target=0.3.6
给我一个错误,说没有选项target
c)我尝试跳过配置步骤(只是尝试)并且构建命令中断:
无法自动定位 src 目录。这是一项临时的 Chromium 功能,将被删除。使用--depth 作为解决方法。
但是当尝试使用 --depth (当然)它需要一个参数时,我不知道该放什么。
那么...我应该如何构建 mdns 模块以将其与 node webkit 一起使用?(0.8.6版本或者0.10.0我都能适应)。