vm.runInContext(code, contextifiedObject[, options])
-
code
<string> 要编译和运行的 JavaScript 代码。¥
code
<string> The JavaScript code to compile and run. -
contextifiedObject
<Object>code
编译运行时将用作global
的 contextified 对象。¥
contextifiedObject
<Object> The contextified object that will be used as theglobal
when thecode
is compiled and run. -
-
filename
<string> 指定此脚本生成的堆栈跟踪中使用的文件名。默认值:'evalmachine.<anonymous>'
。¥
filename
<string> Specifies the filename used in stack traces produced by this script. Default:'evalmachine.<anonymous>'
. -
lineOffset
<number> 指定在此脚本生成的堆栈跟踪中显示的行号偏移量。默认值:0
。¥
lineOffset
<number> Specifies the line number offset that is displayed in stack traces produced by this script. Default:0
. -
columnOffset
<number> 指定在此脚本生成的堆栈跟踪中显示的第一行列号偏移量。默认值:0
。¥
columnOffset
<number> Specifies the first-line column number offset that is displayed in stack traces produced by this script. Default:0
. -
displayErrors
<boolean> 当为true
时,如果编译code
时出现Error
,则导致错误的代码行会附加到堆栈跟踪中。默认值:true
。¥
displayErrors
<boolean> Whentrue
, if anError
occurs while compiling thecode
, the line of code causing the error is attached to the stack trace. Default:true
. -
timeout
<integer> 指定终止执行前执行code
的毫秒数。如果执行终止,则将抛出Error
。此值必须是严格的正整数。¥
timeout
<integer> Specifies the number of milliseconds to executecode
before terminating execution. If execution is terminated, anError
will be thrown. This value must be a strictly positive integer. -
breakOnSigint
<boolean> 如果是true
,接收SIGINT
(Ctrl+C)将终止执行并抛出Error
。已通过process.on('SIGINT')
附加的事件的现有句柄在脚本执行期间被禁用,但在此之后继续工作。默认值:false
。¥
breakOnSigint
<boolean> Iftrue
, receivingSIGINT
(Ctrl+C) will terminate execution and throw anError
. Existing handlers for the event that have been attached viaprocess.on('SIGINT')
are disabled during script execution, but continue to work after that. Default:false
. -
cachedData
<Buffer> | <TypedArray> | <DataView> 为所提供的源提供可选的Buffer
或TypedArray
或DataView
,其中包含 V8 的代码缓存数据。¥
cachedData
<Buffer> | <TypedArray> | <DataView> Provides an optionalBuffer
orTypedArray
, orDataView
with V8's code cache data for the supplied source. -
importModuleDynamically
<Function> 在调用import()
时在评估此模块期间调用。如果未指定此选项,则调用import()
将使用ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING
拒绝。此选项是实验模块 API 的一部分。不建议在生产环境中使用它。¥
importModuleDynamically
<Function> Called during evaluation of this module whenimport()
is called. If this option is not specified, calls toimport()
will reject withERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING
. This option is part of the experimental modules API. We do not recommend using it in a production environment.-
specifier
<string> 说明符传递给import()
¥
specifier
<string> specifier passed toimport()
-
script
<vm.Script> -
importAssertions
<Object> 传给optionsExpression
可选参数的"assert"
值,如果没有提供值,则为空对象。¥
importAssertions
<Object> The"assert"
value passed to theoptionsExpression
optional parameter, or an empty object if no value was provided. -
返回:<Module Namespace Object> | <vm.Module> 建议返回
vm.Module
以利用错误跟踪,并避免包含then
函数导出的命名空间出现问题。¥Returns: <Module Namespace Object> | <vm.Module> Returning a
vm.Module
is recommended in order to take advantage of error tracking, and to avoid issues with namespaces that containthen
function exports.
-
-
-
返回:<any> 脚本中最后一条语句执行的结果。
¥Returns: <any> the result of the very last statement executed in the script.
vm.runInContext()
方法编译 code
,在 contextifiedObject
的上下文中运行它,然后返回结果。运行代码无权访问本地作用域。contextifiedObject
对象之前必须是使用 vm.createContext()
方法的 contextified。
¥The vm.runInContext()
method compiles code
, runs it within the context of
the contextifiedObject
, then returns the result. Running code does not have
access to the local scope. The contextifiedObject
object must have been
previously contextified using the vm.createContext()
method.
如果 options
是字符串,则指定文件名。
¥If options
is a string, then it specifies the filename.
以下示例使用单个 contextified 对象编译和执行不同的脚本:
¥The following example compiles and executes different scripts using a single contextified object:
const vm = require('node:vm');
const contextObject = { globalVar: 1 };
vm.createContext(contextObject);
for (let i = 0; i < 10; ++i) {
vm.runInContext('globalVar *= 2;', contextObject);
}
console.log(contextObject);
// Prints: { globalVar: 1024 }