> myapp build "path/to/script.js"
myapp와는 명령 줄로 전달 된 스크립트를 실행하는 Node.js를 응용 프로그램 외부 스크립트를 실행 Node.js를 가진 명령 줄 인터페이스를 만드는거야 가상 머신 스크립트 모듈을 필요로 논의.
var fs = require("fs"); // this works
var date = require("./date.js"); // supposed to load "path/to/date.js" but fails
내 문제가 있음을 require()
아무튼 ': "경로// script.js가"이런 모양 일의
var vm = require("vm");
var fs = require("fs");
var code = fs.readFileSync(scriptPath, { encoding: "utf8" }); // read "path/to/script.js"
var script = vm.createScript(code, scriptPath);
var context = vm.createContext({ require: require });
script.runInNewContext(context);
내용 :
이 간단한 일을 유지하기 위해서는 기본적으로이 수행 외부 스크립트에서 제대로 작동하지 않습니다. fs
과 같은 "네이티브"모듈에서는 올바르게 작동하지만 로컬 파일에서는 실패합니다. 아마도 모듈을 찾을 곳을 모르기 때문일 것입니다.
이 나는 단순히 다음 코드를 사용하는 것으로 간주했습니다
require(scriptPath);
하지만 난 내 자신의 스크립트 컨텍스트를 주입 할 수 없습니다.
나는 비슷한 문제를 해결하기 위해 sandboxed-module을 사용했습니다 내장 필요한 에뮬레이트하지만 scriptPath
에서 모듈을 찾고 시작하지만 지루한 조금 보인다 내 자신의 require
기능 ...
var myLib = require ("./ myfile.js"); – dandavis
@dandavis 어떻게 원격 지원에 도움이됩니까 ... – Bart
나는 당신이 지나가고있는 것을 보지 못했습니다. 나는 그것이 가능하다는 것도 몰랐다. 컨텍스트에 대해 {require : bind (this)}를 시도 할 수도 있지만, 아마도 프로세스를 설정해야 할 것입니다. – dandavis