방금 coffeescript로 시작했는데 좋았지 만 좌절스러운 문제가있었습니다. 내가 프로세스와 자바 스크립트에서 분기 된 자식 프로세스 사이에 메시지를 보내고받는 기본 버전을 재현 할 때 나는 예상 된 결과를 얻는다. 지금까지는 모든 것이 좋습니다.CoffeeScript에서 child_process.send를 사용할 때 메시지가 누락되었습니다.
----------- app2.js -----------------------------
var child = require('child_process');
var forked = child.fork("./child2.js");
forked.on('message', function (msg) {
console.log("parent recieved ", msg);
});
forked.send({hello:'world'});
---------- child2.js --------------------------------
나는 커피 스크립트의 예를 재현 할 때 노드의-------------- 출력 아직 -----
child received { hello: 'world' }
parent recieved { foo: 'bar' }
을 을 app2.js
process.on('message', function(m) {
console.log("child received ", m);
});
process.send({foo:'bar'});
, 난 단지 얻을 부모가 자식 프로세스로부터의 메시지; 자식 프로세스는 분명히 부모로부터 메시지를받지 못합니다.
-----------app.coffee ----------------------------
cp = require('child_process')
n = cp.fork("./child.coffee")
n.on 'message', (m) =>
console.log 'PARENT recieved', m
n.send {foo:'hello from the parent process'}
---------- child.coffee ---------------------------
process.on 'message', (m) =>
console.log 'CHILD received ', m
console.log "Child process running"
process.send {bar:'hello from the child process'}
-------------------- coffee app.coffee의 출력 ----
컴파일 된 자바 스크립트를 보면 (예상대로) 공동의 결과 coffeescript를 mpiling하는 것은 본질적으로 원래의 자바 스크립트 코드와 동일합니다. 그냥이 함수를 호출하는 함수로 래핑됩니다. 문제는 범위 중 하나 여야하지만, 나는 그것을 재구성하는 방법을 볼 수 없다. 그것은 전문가에게는 사소한 일이 될 것이 틀림 없으며, 나는 그것에 묶여있는 끈의 끝 부분에 있습니다. 그래서 나는 누군가가 친절하게 나를 보여줄 수 있을지 물어볼 것이라고 생각했습니다.
Dr Darryn Reid.
조언을 주셔서 감사합니다. 나는 그것이 "비동기 적으로 생각한다"고 생각한다. 나는 node.js에 대한 문서가 정말로 더 튼튼하게 변해야한다고 생각한다. 부모 프로세스가 자식으로부터 메시지를받은 후에 만 메시지를 보내는 것만으로도 많은 변화가 없습니다. 다시 한번 감사드립니다. – user2073604