javascript / expert
Snippet
Isolierte Code-Ausführung mit node:vm Synthetischen Kontext-Frameworks
Das Node.js Modul node:vm ermöglicht das Kompilieren und Ausführen von Skripten in isolierten synthetischen V8-Kontext-Sandboxes mit strikten Ausführungs-Timeouts.
snippet.js
javascript
1
2
3
4
5
6
7
8
import vm from 'node:vm';const sandboxContext = vm.createContext({ console, result: null });const code = 'result = [1, 2, 3].map(x => x * 2);';const script = new vm.Script(code);script.runInContext(sandboxContext, { timeout: 100 });console.log(sandboxContext.result);
nodejs
Erklärung
1
import vm from 'node:vm';
Importiert das V8 Virtual Machine Ausführungsmodul von Node.js.
2
const sandboxContext = vm.createContext({ console, result: null });
Erstellt einen isolierten V8-Ausführungskontext mit expliziten globalen Bindungen.
3
const code = 'result = [1, 2, 3].map(x => x * 2);';
Definiert den JS-Code-String zur Auswertung in der Sandbox.
4
const script = new vm.Script(code);
Kompiliert den Skript-String vorab in ausführbaren V8-Bytecode.
5
script.runInContext(sandboxContext, { timeout: 100 });
Führt das vorgeplante Skript im Kontext mit 100ms CPU-Timeout aus.
6
console.log(sandboxContext.result);
Liest die im Sandbox-Gültigkeitsbereich veränderte Ausgabevariable aus.