Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让NodeJS评估多个传统JS文件_Javascript_Node.js - Fatal编程技术网

Javascript 如何让NodeJS评估多个传统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

我们使用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中,则只能将它们作为字符串保存,然后可以使用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