2016-11-24 12 views
1

아니다유성 방법, 형식 오류지고, child_process.spawn를 호출하려고 :</p> <pre><code>Meteor.call('execute', this.parameter); </code></pre> <p>Meteor.methods는 기능을 가지고 : child_process.spawn 것은 내가 클라이언트 구성 요소 내부에서 Meteor.method를 호출하려고하는 기능

cp.spawn(pathtoscript, ['-t', parameter.myid], options); 

이 성공적으로 실행 유효한 프로세스 산란하고, (가 완료 될 때까지 30 초 소요) 그러나 브라우저 콘솔이 호출이 직후 오류를 뱉어 : 다음과 같이하는 프로세스를 생성합니다

Exception while simulating the effect of invoking 'execute' TypeError: cp.spawn is not a function(…) TypeError: cp.spawn is not a function

나는 프로세스를 생성하고 함수를 종료하려고 시도했으며 'close'이벤트를 기다리기도했다. 백엔드에서 두 번 실행은 성공하지만 브라우저 콘솔에서 예외가 발생합니다.

는 또한 Meteor.methods 전화를 시도 비동기

Meteor.call('execute', this.parameter, function(error, result) { 
    if (error) { 
     alert(error, error.reason); 
    } 
     console.log(result); 
    });*/ 

Meteor.methods에 반환 값을 추가하는 동안. 그리고 항상 같은 방식으로 끝납니다.

이러한 경우 프로세스를 생성하는 적절한 방법을 알려주실 수 있습니까?

답변

0

이것은 메소드 코드가 클라이언트와 서버 모두에 있기 때문입니다. 브라우저에 spawn이 없으므로 클라이언트에서 실행할 수 없습니다.

은 단순히 전용 또는 단지 조건 Meteor.isServer와 함께 if 문 안쪽에 싸서 서버 코드로 방법을 움직일 수이 문제를 해결하려면 :

if (Meteor.isServer) { 
    Meteor.methods({ 
    execute(params) { 
     //... 
    } 
    }); 
} 
+0

감사합니다, 그것은했다. 클라이언트에서이 코드를 호출하여 서버에서 실행해야하므로 유추 문서에서 명시적인 정보를 찾을 수 없으므로 조금 혼란스러워 보입니다. –

+0

이 https://guide.meteor.com/structure.html#files-outside를 확인하십시오. – Khang