3

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)

mdnsx86 アーキテクチャ用にビルドされたモジュールをインストールする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 のいずれか、私は適応できます)。

4

1 に答える 1

4

私はそれを機能させることができました。

既にモジュールをインストールしていたので、プロジェクト フォルダー内mdnsのフォルダーにモジュールのソース コードが既にありました。node_modules/mdns

mdnsi386 アーキテクチャ用のモジュールをビルドするための手順は次のとおりです。

1) 以下を実行して nw-gyp をインストールします。npm install -g nw-gyp
2) node_modules/mdnsnode-webkit プロジェクトのフォルダーに入ります
3) 実行しますnw-gyp configure --target=0.8.6(このターゲットは、インストールした node-webkit のバージョンです)
4) 最後に実行しますnw-gyp build

非推奨の機能について多くの警告を受けましたが、正常にビルドされ、node-webkit アプリケーションが Bonjour サービスを正常に公開できるようになりました。

残念ながら、これは最善の解決策ではありません。なぜなら、プロジェクトをインストールする次の人は、通常のインストール後に同じことをしなければならないからですnpm install...しかし、少なくともそれを機能させるためのものです.

于 2014-07-24T13:07:01.880 に答える