توفر node:vm واجهات تجميع السكربتات والسياقات بشكل Node.
السياق ليس حدًّا أمنيًا. فالكائنات الجوهرية مشتركة مع نطاق المضيف. استخدم عزل العمليات ونظام الملفات للشيفرة غير الموثوقة.
| الصادر | الغرض |
|---|---|
Script | تجميع الشيفرة وتشغيلها في هذا السياق أو في سياق معزول. |
createContext() / isContext() | تحويل كائن إلى سياق والتحقق من علامته. |
compileFunction() | تجميع جسم دالة. |
runInThisContext() | التقييم في النطاق العام الحالي. |
runInContext() | التقييم مقابل كائن محوَّل إلى سياق. |
runInNewContext() | التقييم مقابل كائن معزول جديد. |
measureMemory() | إعادة Promise لنتيجة ذاكرة. |
constants | ثوابت الآلة الافتراضية. |
const vm = require("node:vm");
const sandbox = { x: 2 };
vm.createContext(sandbox);
vm.runInContext("x + 3", sandbox); // 5لا يكشف SourceTextModule إلا دورة حياة محدودة ولا يوفر ربط
الوحدات وتقييمها الكاملين.
انظر أيضًا
Reference
Status: Full · 80 of 95 suite tests pass (84.2%) · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
Script | class | Full | runInThisContext(), runInNewContext() |
createContext() | function | Full | Creates a new execution context (sandbox) |
runInNewContext() | function | Full | Compiles code, creates a new context, and runs the code in that context |
runInThisContext() | function | Full | Compiles and runs code within the current global context |
isContext() | function | Full | Returns whether the given object is a contextified sandbox |
Tests: node-api node:vm: 80 pass, 15 fail, 0 error, 3 skipped. Failing: test-vm-basic.js, test-vm-codegen.js, test-vm-context-dont-contextify.js, test-vm-function-declaration.js, test-vm-global-property-prototype.js, test-vm-global-setter.js, test-vm-harmony-symbols.js, test-vm-module-after-evaluate.js, and 7 more.