阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js script.runInNewContext

      Node.js script.runInNewContext(code[, sandbox[, options]])

      新增于: v0.3.1

      • code < string> 将被编译和运行的JavaScript代码
      • sandbox < Object> 一个将被上下文隔离化的对象。如果是undefined, 会生成一个新的对象
      • options
        • filename < string> 定义供脚本生成的堆栈跟踪信息所使用的文件名
        • lineOffset < number> 定义脚本生成的堆栈跟踪信息所显示的行号偏移
        • columnOffset < number> 定义脚本生成的堆栈跟踪信息所显示的列号偏移
        • displayErrors < boolean> 当值为真的时候,假如在解析代码的时候发生错误Error,引起错误的行将会被加入堆栈跟踪信息
        • timeout < number> 定义在被终止执行之前此code被允许执行的最大毫秒数。假如执行被终止,将会抛出一个错误Error

      首先给指定的sandbox(若为undefined,则会新建一个sandbox)提供一个隔离的上下文, 再在此上下文中执行vm.Script中被编译的代码,最后返回结果。运行中的代码无法获取本地作用域。

      以下的例子会编译一段代码,该代码会递增一个全局变量,给另外一个全局变量赋值。同时该代码被编译后会被多次执行。全局变量会被置于sandbox对象内。

      const util = require('util');
      const vm = require('vm');
      
      const sandbox = {
        animal: 'cat',
        count: 2
      };
      
      vm.runInNewContext('count += 1; name = "kitty"', sandbox);
      console.log(util.inspect(sandbox));
      
      // { animal: 'cat', count: 3, name: 'kitty' }
      

      更多内容请参考:Node.js vm,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录