2013-12-18 3 views
2

나는 socket.io 클라이언트에 의존성을 포함하는 browserify에 의해 생성 된 모듈 (예 : M)을 사용하고 있습니다. M이 AMD 응용 프로그램에서 사용되고 있습니다. 응용 프로그램 내부에서 M이 소켓 클라이언트에 연결 호출을 발행하고 선택한 전송이 jsonp 폴링 인 경우 jsonp 콜백을 실행하려고 시도하면 ReferenceError: io is undefined이 발생합니다. 이것은 io이 전역이 아니기 때문에 대신 M 모듈 안에 싸여 있습니다.socket.io 클라이언트가 전역 범위에 있어야합니까?

제 질문은 io이 글로벌 범위에 있습니까? 글로벌 범위에 io을 추가하지 않고도 콜백 배열에 액세스 할 수있는 방법이 있습니까?

면책 조항 - 예제 코드는 제공하지 않았지만 쉽게 구현하고 실행할 수있는 모의 예제를 작성하는 데 어려움을 겪고 있습니다. 질문이 실제로 이해가 안되면 나에게 알려주십시오. 제가 함께 할 수 있는지 알게 될 것입니다. 그러나 누군가가 대답 할 수 있다고 생각하거나 코드를 보지 않고 올바른 방향으로 나를 가리 키도록하십시오. !

답변

3

아니요. 글로벌 네임 스페이스에있을 필요는 없지만 일부 작업이 필요하며 github 프로젝트의 루트에있는 미리 만들어진 파일을 사용할 수 없습니다.

소스에서 socketio-client 프로젝트를 빌드해야합니다. 단지 문제는 프로젝트가 위대한 TJ Hallowaychuck이 만든 간단한 클라이언트 측 패키지 관리자 인 component.js을 사용하여 빌드 된 것입니다. 문제는 사용자가 component(1)을 사용하여 구성 요소를 빌드 할 때 require() 함수의 자체 구현과 함께 제공됩니다.이 함수는 전역 네임 스페이스에서 browserify의 자체 구현과 경쟁합니다.

그러나 모두 손실되지 않습니다! 이 변환에 사용 ...

https://github.com/eugeneware/decomponentify

구조로 변환, 당신은 다른 browserify 활성화 모듈처럼 browserify 내 component(1)require()을 건설 한 모듈을 소모 할 수 있습니다. 사용을 위해 문서를 읽으십시오.

그래, 나도 클라이언트 측 패키지 관리에서 표준화 작업을 기다리고 있습니다.

+0

감사합니다. 나는 그것에 들어가서 그것이 어떻게되는지 보게 될 것이다. 나는 이것을 답으로 표시 하겠지만 더 많은 질문이있을 수 있습니다. 건배. –

관련 문제