这是一个简单的使用nodejs vm2执行JS脚本并打印结果的例子,包含了传参和如何打印结果,我看好多VM2的例子都没有传参这块,所以就整个demo发出来,需要具体工程的可以到我的博客下载中下载完整工程。
var fs = require('fs');
const {VM,VMScript} = require('vm2');//npm install vm2
const file = `${__dirname}/code.js`;
const windowfile = `${__dirname}/window.js`;
const vm = new VM();
//使用VMScript可以调试,在调试代码中增加debugger即可
const script = new VMScript(fs.readFileSync(windowfile)+fs.readFileSync(file),`${__dirname}.my.js`);
vm.setGlobal('aaa','888');//入参传值
vm.setGlobal('myresult','');//返回值
vm.run(script);
var myresult = vm.getGlobal('myresult');//获取返回值
console.log('out',myresult);//返回结果