2014-07-24 3 views
3

Mac에서 Bonjour 서비스를 게시하기 위해 mdns 모듈을 사용하는 노드 웹킷 응용 프로그램 (Mavericks 포함)이 있습니다. 내가 서버 코드를 실행하면 node server.js 모든 확인 작업과 함께,하지만 같은 서버 코드를 사용하는 노드 웹킷 응용 프로그램을 실행할 때이 오류가 얻을 : 당신이이 위해 만들어진 것 npm으로 mdns 모듈을 설치할 때 분명히노드 webkit 응용 프로그램에서 node.js 모듈 mdns를 실행할 수 없습니다.

"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) 

을 x86 아키텍처와 나는 i386을 위해 필요하다. 왜냐하면 node-webkit은 i386을 위해 만들어 졌기 때문이다. (나는이 스레드를 읽음으로써 이것을 알았다 : http://forums.macrumors.com/showthread.php?t=879780). 당신은 터미널에서 이것을 실행하여 확인할 수 있습니다 https://github.com/rogerwang/node-webkit/issues/296 다른 모듈 (노드 프록시)에 대한 :

$ lipo -info /Applications/node-webkit.app/Contents/MacOS/node-webkit 
Non-fat file: /Applications/node-webkit.app/Contents/MacOS/node-webkit is architecture: i386 

나는 해결책을 제안이 링크를 발견했다. 제안 된 지침은 다음과 같습니다

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) 구성 단계를 건너 뛰고 (빌드를 시도했다.) 빌드 명령이 깨졌다.

Could not automatically locate src directory. This isa temporary Chromium feature that will be removed. Use--depth as a workaround.

그러나 --depth (물론)를 사용하려고 할 때 인수가 필요하면 넣을 항목을 찾을 수 없습니다.

그래서 ... 노드 웹킷에서 사용하기 위해 mdns 모듈을 어떻게 빌드해야합니까? (0.8.6 버전 또는 0.10.0, 나는 적응할 수있다).

답변

4

나는 그걸 만들 수있었습니다.

이미 mdns 모듈을 설치 했으므로 이미 내 프로젝트 폴더 내에있는 node_modules/mdns 폴더에 모듈의 소스 코드가 있습니다. 노드 - 웹킷 프로젝트의 node_modules/mdns 폴더에 입력) npm install -g nw-gyp
2 : 실행하여

1)를 설치 NW-사기꾼 :

그래서이 내가 i386 아키텍처의에 대한 mdns 모듈을 구축하는 다음 단계입니다
3) 실행 nw-gyp configure --target=0.8.6 (이 대상은 설치 한 노드 웹킷의 버전)
4) 그리고 마지막으로 내가되지 방지 동작의 경고를 많이 가지고 nw-gyp build

실행입니다 ons이지만 괜찮 았는데 이제는 노드 - 웹킷 애플리케이션이 Bonjour 서비스를 성공적으로 게시 할 수 있습니다.

그러나 불행히도 이것은 프로젝트를 설치하는 다음 사람이 일반 npm install 이후에 똑같이해야하기 때문에 최선의 해결책은 아니지만 적어도 작동시키기 위해서는 뭔가가 필요합니다.

관련 문제