【问题标题】:Nodejs vm2 - how to import scriptsNodejs vm2 - 如何导入脚本
【发布时间】:2018-05-07 22:18:36
【问题描述】:
假设你有脚本 A: 定义了一个库:
class MathFunctions { add(a, b) => { return a+b; } }
你有脚本 B:以某种方式重用 MathFunctions:
const mf = import MathFunctions;
console.log(mf.add(2, 2));
你想在 vm 上下文中执行 B,导入 A。
使用不可信代码的最佳方法是什么?
这里有类似的问题:https://github.com/patriksimek/vm2/issues/121
【问题讨论】:
标签:
node.js
sandbox
node-vm2
nodevm
【解决方案1】:
节点导入系统 (const foo = require('foo');) 通过预处理器运行您的代码,该预处理器将其包装在一个函数中并传入require, module, exports,您也可以通过预处理器运行您的代码来复制该效果。幸运的是,有很多可用的,因为浏览器也缺少模块。因此,任何浏览器的模块预处理器(例如 webpack)都可以解决问题。
比如new VM().run(webpack('./moduleB.js'))