Node.js在另一个文件中运行文件

时间:2019-01-27 15:51:15

标签: javascript node.js eval

这是我当前的代码

function includeClass(classname, ctx) {
   var txt = fs.readFileSync("socket.io/" + classname + ".js");
   return txt;
}

//define globals here
var _PLAYERS = {};
var _SPAWNPOINTS = [];

vm.runInThisContext(includeClass("vector"));
vm.runInThisContext(includeClass("class"));
vm.runInThisContext(includeClass("connectionHandler"));
vm.runInThisContext(includeClass("game"));

但是那样,class.js文件无法访问全局范围或其他文件中的变量。因为现在我收到错误,例如_PLAYERSrequire未定义。我也尝试过eval(),但是它什么也没做。

如何在主脚本中运行这些js脚本,以便将它们解释为1个整体?

1 个答案:

答案 0 :(得分:0)

https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options

  

正在运行的代码无权访问本地范围,但有权访问当前的全局对象。

您的main.py变量不是真正的全局变量,它在脚本中是局部的。以及module scope中的其他变量(例如_PLAYERS)。

您可以尝试将所需的变量分配给require对象,但是,我不太清楚可能会产生哪些副作用和并发症。