Mac (Mavericks を使用) から Bonjour サービスを公開するために mdns モジュールを使用するノード Webkit アプリケーションがあります。サーバー コードを実行すると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
x86 アーキテクチャ用にビルドされたモジュールをインストールするnpm
と、ノード Web キットが i386 用にビルドされているため、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 を使用しようとすると (もちろん) 引数が必要で、そこに何を入れるかわかりませんでした。
では...ノードWebkitで使用するためにmdnsモジュールをどのように構築すればよいですか? (0.8.6 バージョンまたは 0.10.0 のいずれか、私は適応できます)。