首页 > 解决方案 > Nodejs vm2 - 如何导入脚本

问题描述

假设您有脚本 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.jssandboxnode-vm2nodevm

解决方案


const foo = require('foo');节点导入系统require, module, exports(幸运的是,有很多可用的,因为浏览器也缺少模块。因此,任何浏览器的模块预处理器(例如 webpack)都可以解决问题。

所以像new VM().run(webpack('./moduleB.js'))


推荐阅读