다른 Node.js 스크립트 내에서 Node.js 스크립트를 실행하는 방법
라는 독립 실행 형 노드 스크립트가 compile.js
있습니다. 작은 Express 앱의 기본 폴더 안에 있습니다.
때때로 compile.js
명령 줄에서 스크립트를 실행합니다 . 다른 시나리오에서는 Express 앱에서 실행하기를 원합니다.
두 스크립트 모두 package.json
. Compile.js
지금은 메소드를 내 보내지 않습니다.
이 파일을로드하고 실행하는 가장 좋은 방법은 무엇입니까? 나는 살펴 보았다 eval()
, vm.RunInNewContext
그리고 require
,하지만 확실 올바른 접근 방식은 무엇인가.
도움을 주셔서 감사합니다 !!
하위 프로세스를 사용하여 스크립트를 실행하고 종료 및 오류 이벤트를 수신하여 프로세스가 완료되거나 오류가 발생하는시기를 알 수 있습니다 (경우에 따라 종료 이벤트가 발생하지 않을 수 있음). 이 메서드는 호출하려는 타사 스크립트와 같이 자식 프로세스로 실행되도록 명시 적으로 설계되지 않은 경우에도 모든 비동기 스크립트로 작업 할 수있는 이점이 있습니다. 예:
var childProcess = require('child_process');
function runScript(scriptPath, callback) {
// keep track of whether callback has been invoked to prevent multiple invocations
var invoked = false;
var process = childProcess.fork(scriptPath);
// listen for errors as they may prevent the exit event from firing
process.on('error', function (err) {
if (invoked) return;
invoked = true;
callback(err);
});
// execute the callback once the process has finished running
process.on('exit', function (code) {
if (invoked) return;
invoked = true;
var err = code === 0 ? null : new Error('exit code ' + code);
callback(err);
});
}
// Now we can run a script and invoke a callback when complete, e.g.
runScript('./some-script.js', function (err) {
if (err) throw err;
console.log('finished running some-script.js');
});
보안 문제가있을 수있는 환경에서 타사 스크립트를 실행하는 경우 샌드 박스 vm 컨텍스트에서 스크립트를 실행하는 것이 더 나을 수 있습니다.
자식 프로세스를 포크하는 것이 유용 할 수 있습니다. http://nodejs.org/api/child_process.html을 참조 하십시오.
링크의 예에서 :
var cp = require('child_process');
var n = cp.fork(__dirname + '/sub.js');
n.on('message', function(m) {
console.log('PARENT got message:', m);
});
n.send({ hello: 'world' });
이제 자식 프로세스는 다음과 같이됩니다 ...
process.on('message', function(m) {
console.log('CHILD got message:', m);
});
process.send({ foo: 'bar' });
But to do simple tasks I think that creating a module that extends the events.EventEmitter class will do... http://nodejs.org/api/events.html
ReferenceURL : https://stackoverflow.com/questions/22646996/how-do-i-run-a-node-js-script-from-within-another-node-js-script
'IT TIP' 카테고리의 다른 글
어떤 OSS 라이선스와 호환되는 차트가 있습니까? (0) | 2021.01.08 |
---|---|
Python SQLite에서 데이터베이스 연결을 닫지 않으면 어떻게 되나요? (0) | 2021.01.08 |
Advantages and Disadvantages of using ReactJS (0) | 2021.01.08 |
Java Casting : Java 11에서는 LambdaConversionException이 발생하지만 1.8에서는 발생하지 않습니다. (0) | 2021.01.08 |
Can I fade in a background image (CSS: background-image) with jQuery? (0) | 2021.01.08 |