【发布时间】:2023-12-19 23:47:01
【问题描述】:
我发现以下方法可以很方便地包含 nodejs 文件,而无需将它们转换为模块。只有一个小警告。我宁愿不必在 main.js 中将我的 var 更改为 global,以便可以通过 included.js 文件访问它。正如您在包含的文件中看到的那样,我不必这样做。我的主要变量可以访问那里的变量。见代码。是否有某种方式可以在包含的文件中访问节点主文件的本地上下文,而无需将所有 var.* 更改为 global.* 如果我希望它们通过包含访问。
这里是代码
//主文件
//evalmain.js
var vm = require('vm');
var fs=require("fs");
global.globalVar = 0; //<<-- *** Prefer var globalVar***
// Include the script
var script = new vm.Script(fs.readFileSync(__dirname+"\\evalinc.js"+""));
script.runInThisContext();
console.log("globalVar: ", globalVar, " evalVar: ", evalVar);
showvars();
console.log("globalVar: ",++globalVar, " evalVar: ", evalVar);
evalVar="Now set in evalmain";
showvars();
//包含文件
// evalinc.js is the file to be included
// Note, it's not a module. Just plain JS
debugger;
globalVar=100; // Sets the global variable at main!
var evalVar="Set in evalinc!";
var showvars=function(){
console.log("globalVar: ",++globalVar, " evalVar: ", evalVar);
}
【问题讨论】: