Nodejs vm2 - 如何导入脚本

时间:2018-05-07 22:18:37

标签: node.js sandbox node-vm2 nodevm

假设您有脚本A:使用以下内容定义库:

class MathFunctions { add(a, b) => { return a+b; } }

你有脚本B:以某种方式重用MathFunction:

const mf = import MathFunctions;
console.log(mf.add(2, 2));

并且您希望在vm上下文中执行B,导入A。

使用不受信任的代码执行此操作的最佳方式是什么?

类似的问题:https://github.com/patriksimek/vm2/issues/121

1 个答案:

答案 0 :(得分:0)

节点导入系统(const foo = require('foo');)的工作原理是通过预处理器运行代码,该预处理器将其封装在函数中并传入require, module, exports您也可以通过预处理器运行代码来复制该效果。幸运的是,由于浏览器也缺少模块,因此可用。因此,浏览器的任何模块预处理器(例如webpack)都可以解决问题。

new VM().run(webpack('./moduleB.js'))

这样的事情