这是我当前的代码
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文件无法访问全局范围或其他文件中的变量。因为现在我收到错误,例如_PLAYERS
或require
未定义。我也尝试过eval()
,但是它什么也没做。
如何在主脚本中运行这些js脚本,以便将它们解释为1个整体?
答案 0 :(得分:0)
https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options:
正在运行的代码无权访问本地范围,但有权访问当前的全局对象。
您的main.py
变量不是真正的全局变量,它在脚本中是局部的。以及module scope中的其他变量(例如_PLAYERS
)。
您可以尝试将所需的变量分配给require
对象,但是,我不太清楚可能会产生哪些副作用和并发症。