假设您有脚本A:使用以下内容定义库:
class MathFunctions { add(a, b) => { return a+b; } }
你有脚本B:以某种方式重用MathFunction:
const mf = import MathFunctions;
console.log(mf.add(2, 2));
并且您希望在vm上下文中执行B,导入A。
使用不受信任的代码执行此操作的最佳方式是什么?
答案 0 :(得分:0)
节点导入系统(const foo = require('foo');
)的工作原理是通过预处理器运行代码,该预处理器将其封装在函数中并传入require, module, exports
您也可以通过预处理器运行代码来复制该效果。幸运的是,由于浏览器也缺少模块,因此可用。因此,浏览器的任何模块预处理器(例如webpack)都可以解决问题。
像new VM().run(webpack('./moduleB.js'))