Skip to content

VM(执行 JavaScript)

node:vm 模块支持在 V8 虚拟机环境中编译和运行代码。

node:vm 模块不是一种安全机制。请勿使用它来运行不受信任的代码。

JavaScript 代码可以立即编译并运行,也可以编译、保存并稍后运行。

一个常见的用例是在不同的 V8 上下文中运行代码。这意味着被调用的代码与调用代码具有不同的全局对象

js
const vm = require('node:vm');

const x = 1;

const context = { x: 2 };
vm.createContext(context); // Contextify the object.

const code = 'x += 40; var y = 17;';
// `x` 和 `y` 是上下文中的全局变量。
// 最初,x 的值为 2,因为这是 context.x 的值
vm.runInContext(code, context);

console.log(context.x); // 42
console.log(context.y); // 17

console.log(x); // 1; y is not defined.

Released under the MIT License.