우리는 nodejs를 js 엔진으로 사용하여 서버 측의 일부 학생 스크립트를 평가하므로 정확성을 테스트 할 수 있습니다.NodeJS에서 여러 개의 전통적인 JS 파일을 평가하는 방법
기존의 여러 .js 파일을 '요구'하거나 '가져올 수있는 방법이 있습니까? 여러 사용자의 제출물을 포함시켜야합니다. 아니면 파일을 연결해야합니까?
우리는 nodejs를 js 엔진으로 사용하여 서버 측의 일부 학생 스크립트를 평가하므로 정확성을 테스트 할 수 있습니다.NodeJS에서 여러 개의 전통적인 JS 파일을 평가하는 방법
기존의 여러 .js 파일을 '요구'하거나 '가져올 수있는 방법이 있습니까? 여러 사용자의 제출물을 포함시켜야합니다. 아니면 파일을 연결해야합니까?
예, Node.JS (대부분의 고급 언어와 마찬가지로)는 동적 가져 오기를 지원합니다. 당신이
var files = ["student1.js", "student2.js", "student3.js", ...];
예를
에 대한 파일의 목록을 가지고 있다면 당신은 단순히 자동으로이 파일을 가져 와서 평가합니다files.forEach(function(f) {
try {
require(f);
} catch(e) {
console.log("Error in file: "+f);
}
});
이 작업을 수행 할 수 있습니다. 파일의 오류로 인해 예외가 발생할 수 있으므로 try{}catch{}
으로 묶는 것이 좋습니다.
당신은 데이터베이스 스크립트를 유지하지만 경우 문자열은 다음 평가를 사용할 수 있기 때문에 Node.js를 당신은 그들을 가지고
"전통적인"물론var scripts = ["var x = 1;", "console.log('test');", ...];
scripts.forEach(function(s) {
try {
eval(s);
} catch(e) {
console.log("Error in script:\n"+s);
}
});
(나는에 의해 당신이 반드시 브라우저 의미한다고 가정 side JavaScript) 스크립트는 Node.JS와 호환되지 않을 수 있습니다 (예 : Node.JS에는 window
이 없음).
경고 : 두 가지 방법이 (사용자가 악성 스크립트를 업로드 할 수 있습니다) 안전하지 주, 그래서 아마도 가장 좋은 아이디어는 그들 각각에 대해 (제한된 환경에서) 별도의 Node.js를의 프로세스를 생성하는 것입니다. 당신은 그것을위한 스크립트를 작성할 수 있습니다, 그것은 조금 더 복잡합니다.
이 대답에 감사드립니다. 주변을 둘러 보았을 때 브라우저 코드에서 작동하지 않는 모듈 식 솔루션이 발견되었습니다 : P – BenMQ
학생용 샘플 스크립트와 평가 방법을 알려주시겠습니까? 擬似 코드도 괜찮습니다. – Chandu