Javascript 如何让NodeJS评估多个传统JS文件
我们使用nodejs作为js引擎来评估服务器端的一些学生脚本,以便测试它们的正确性 有没有一种方法可以“要求”或“导入”多个传统的.js文件?我们需要包括来自多个用户的提交。或者我必须连接文件?是的,Node.JS(像大多数高级语言一样)支持动态导入。例如,如果您有一个文件列表Javascript 如何让NodeJS评估多个传统JS文件,javascript,node.js,Javascript,Node.js,我们使用nodejs作为js引擎来评估服务器端的一些学生脚本,以便测试它们的正确性 有没有一种方法可以“要求”或“导入”多个传统的.js文件?我们需要包括来自多个用户的提交。或者我必须连接文件?是的,Node.JS(像大多数高级语言一样)支持动态导入。例如,如果您有一个文件列表 var files = ["student1.js", "student2.js", "student3.js", ...]; 然后你可以简单地做 files.forEach(function(f) { try
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中,则只能将它们作为字符串保存,然后可以使用eval:
var scripts = ["var x = 1;", "console.log('test');", ...];
scripts.forEach(function(s) {
try {
eval(s);
} catch(e) {
console.log("Error in script:\n"+s);
}
});
当然,“传统”(我假设您指的是浏览器端JavaScript)脚本可能与Node.JS不兼容(例如Node.JS中没有window
)
警告:请注意,这两种方法都是不安全的(用户可以上载恶意脚本),因此最好的办法可能是为每种方法生成一个单独的Node.JS进程(在受限环境中)。你也可以为此编写一个脚本,只是有点复杂。你能给出一个学生脚本示例以及你打算如何评估吗?Psuedo代码也很好谢谢你的回答。当我环顾四周时,我发现的只是一个不适用于浏览器代码的模块化解决方案:P