El método script.runInNewContext() primero contextualiza el contextObject indicado, ejecuta el código compilado dentro del objeto vm.Script dentro del contexto creado y luego devuelve el resultado. Sin embargo, el código en ejecución no tiene acceso al ámbito local.
Sintaxis:
script.runInNewContext( contextObject, options )
Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:
- contextObject: Es un objeto que será contextualizado y si no está definido, entonces se creará un nuevo objeto,
- options: es opcional y devuelve Object .
Contiene los siguientes parámetros:
- displayErrors: tiene un valor booleano, es decir, verdadero si se produce un error al compilar el código y la línea de código por la que se produce el error está vinculada al seguimiento de la pila. Su valor por defecto es verdadero.
- timeout: Contiene un valor entero que especifica el número de milisegundos necesarios para ejecutar el código indicado antes de finalizar la ejecución. Sin embargo, si se cierra una ejecución, se producirá un error. Y el valor de esto debe ser un número entero positivo absolutamente.
- breakOnSigint: Tiene un valor booleano. Si es cierto, la ejecución se detendrá tan pronto como se proporcione SIGINT , es decir, (Ctrl+C). Y si se detiene la ejecución, se arroja un error. Su valor por defecto es false.
- contextName: contiene una string. Son nombres legibles por humanos del contexto recién generado. Y por defecto es ‘VM Context i’ donde i es el índice del contexto generado que asciende numéricamente.
- contextOrigin: contiene una string. Es el origen que equivale al contexto recién generado. Además, el origen debe formarse como una URL. Su valor por defecto es ”.
- contextCodeGeneration: Es de tipo Object.
Contiene los siguientes parámetros:- strings: contiene un valor booleano y si se establece en falso, cualquier llamada a los constructores de funciones o eval arrojará un error, es decir, EvalError . Su valor predeterminado es verdadero.
- wasm: tiene un valor booleano y si se establece en falso, cualquier intento de compilar un módulo WebAssembly arrojará un error, es decir, WebAssembly.CompileError . Su valor por defecto es verdadero.
Valor devuelto: Devuelve el resultado de la última instrucción ejecutada en el script.
Los siguientes ejemplos ilustran el uso del método script.runInNewContext() en Node.js:
Ejemplo 1:
// Node.js program to demonstrate the // script.runInNewContext() method // Including util and vm module const util = require('util'); const vm = require('vm'); // Constructing context const context = { x: 3, y:4 }; // Constructing a script const script = new vm.Script('x *=11, y *=4;'); // Calling runInNewContext method script.runInNewContext(context); // Displays output console.log("The output is: ", context);
Producción:
The output is: { x: 33, y: 16 }
Ejemplo 2:
// Node.js program to demonstrate the // script.runInNewContext() method // Including util and vm module const util = require('util'); const vm = require('vm'); // Creating contexts cont = { animal: 'dog', total_number: 5 }; // Creating script with its parameters var script = vm.createScript( 'total_number += 5; name = "Sheru"', 'file.vm'); // Calling runInNewContext method script.runInNewContext(cont); // Displays output console.log(cont);
Producción:
{ animal: 'dog', total_number: 10, name: 'Sheru' }
Referencia: https://nodejs.org/api/vm.html#vm_script_runinnewcontext_contextobject_options
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA