Node.js v18.8.0 文档


目录

repl 交互式解释器#

中英对照

node:repl 模块提供了一个读取-评估-打印-循环 (REPL) 实现,它既可以作为独立程序使用,也可以包含在其他应用程序中。 可以使用以下方式访问它:


设计与特性#

中英对照

node:repl 模块导出 repl.REPLServer 类。 当运行时,repl.REPLServer 的实例将接受用户输入的单行,根据用户定义的评估函数评估它们,然后输出结果。 输入和输出可能分别来自 stdinstdout,也可能连接到任何 Node.js

命令与特殊键#

中英对照

所有 REPL 实例都支持以下特殊命令:

    
    

      默认的解释器#

      中英对照

      默认情况下,repl.REPLServer 的所有实例都使用评估函数来评估 JavaScript 表达式并提供对 Node.js 内置模块的访问。 可以通过在创建 repl.REPLServer 实例时传入替代评估函数来覆盖此默认行为。

      JavaScript 表达式#

      中英对照

      默认的求值器支持 JavaScript 表达式的直接求值:

      
      

      全局作用域与局部作用域#

      中英对照

      默认求值器提供对全局作用域中存在的任何变量的访问。 可以通过将变量分配给与每个 REPLServer 关联的 context 对象来显式地向 REPL 公开变量:

      
      

      
      

      
      
      访问 Node.js 核心模块#

      中英对照

      默认的求值器会在使用时自动将 Node.js 核心模块加载到 REPL 环境中。 例如,除非另外声明为全局变量或作用域变量,否则输入 fs 将按需评估为 global.fs = require('node:fs')

      
      
      全局的未捕获异常#

      中英对照

      REPL 使用 domain 模块来捕获该 REPL 会话的所有未捕获的异常。

        _(下划线)变量的赋值#

        中英对照

        默认情况下,默认求值器会将最近求值的表达式的结果分配给特殊变量 _(下划线)。 将 _ 显式设置为一个值将禁用此行为。

        
        

        
        
        await 关键词#

        中英对照

        在顶层启用对 await 关键字的支持。

        
        

        
        

        反向i搜索#

        中英对照

        REPL 支持类似于 ZSH 的双向反向搜索。 由 Ctrl+R 触发向后搜索,由 Ctrl+S 触发向前搜索。

        自定义的解释函数#

        中英对照

        当新建 repl.REPLServer 时,可能会提供自定义评价函数。 例如,这可用于实现完全定制的 REPL 应用程序。

        
        
        可恢复的错误#

        中英对照

        在 REPL 提示符下,按 Enter 将当前输入行发送到 eval 函数。 为了支持多行输入,eval 函数可以返回 repl.Recoverable 的实例给提供的回调函数:

        
        

        自定义 REPL 输出#

        中英对照

        默认情况下,repl.REPLServer 实例在将输出写入提供的 Writable 流(默认为 process.stdout)之前使用 util.inspect() 方法格式化输出。 showProxy 检查选项默认设置为 true,colors 选项设置为 true,具体取决于 REPL 的 useColors 选项。

        
        

        
        

        REPLServer#

        中英对照

          repl.REPLServer 的实例是使用 repl.start() 方法或直接使用 JavaScript new 关键字创建的。

          
          

          'exit' 事件#

          中英对照

          通过接收 .exit 命令作为输入,用户按 Ctrl+C 两次以发出信号 SIGINT,或按 Ctrl+D 在输入流上发出 'end' 信号。 不带任何参数调用监听器回调。

          
          

          'reset' 事件#

          中英对照

          当重置 REPL 的上下文时会触发 'reset' 事件。 每当接收到 .clear 命令作为输入时,就会发生这种情况,除非 REPL 使用默认评估器并且 repl.REPLServer 实例是在 useGlobal 选项设置为 true 的情况下创建的。 将使用对 context 对象的引用作为唯一参数调用监听器回调。

          
          

          
          

          replServer.defineCommand(keyword, cmd)#

          中英对照

            replServer.defineCommand() 方法用于向 REPL 实例添加新的以 . 为前缀的命令。 此类命令是通过键入 . 后跟 keyword 来调用的。 cmd 是具有以下属性的 FunctionObject

              
              

              
              

              replServer.displayPrompt([preserveCursor])#

              中英对照

                replServer.displayPrompt() 方法准备 REPL 实例以供用户输入,将配置的 prompt 打印到 output 中的新行并恢复 input 以接受新输入。

                replServer.clearBufferedCommand()#

                中英对照

                replServer.clearBufferedCommand() 方法清除任何已缓冲但尚未执行的命令。 此方法主要用于从使用 replServer.defineCommand() 方法注册的命令的操作函数中调用。

                replServer.parseREPLKeyword(keyword[, rest])#

                中英对照

                  用于解析和执行 REPLServer 个关键字的内部方法。 如果 keyword 是有效关键字,则返回 true,否则返回 false

                  replServer.setupHistory(historyPath, callback)#

                  中英对照

                    初始化 REPL 实例的历史日志文件。 当执行 Node.js 二进制文件并使用命令行 REPL 时,默认情况下会初始化一个历史文件。 但是,以编程方式创建 REPL 时并非如此。 在以编程方式使用 REPL 实例时,使用此方法初始化历史日志文件。

                    repl.builtinModules#

                    中英对照

                      所有 Node.js 模块的名称列表,例如 'http'

                      repl.start([options])#

                      中英对照

                        repl.start() 方法创建并启动了一个 repl.REPLServer 实例。

                        
                        

                        Node.js 的 REPL#

                        中英对照

                        Node.js 本身使用 node:repl 模块来提供自己的交互界面来执行 JavaScript。 这可以通过执行 Node.js 二进制文件而不传入任何参数(或通过传入 -i 参数)来使用:

                        
                        

                        环境变量选项#

                        中英对照

                        可以使用以下环境变量自定义 Node.js REPL 的各种行为:

                          历史记录#

                          中英对照

                          默认情况下,Node.js REPL 将通过将输入保存到位于用户主目录中的 .node_repl_history 文件来保留 node REPL 会话之间的历史记录。 这可以通过设置环境变量 NODE_REPL_HISTORY='' 来禁用。

                          在高级的行编辑器中使用 Node.js REPL#

                          中英对照

                          对于高级行编辑器,使用环境变量 NODE_NO_READLINE=1 启动 Node.js。 这将在规范的终端设置中启动主程序和调试器 REPL,这将允许与 rlwrap 一起使用。

                          
                          

                          在一个 Node.js 实例中启动多个 REPL 实例#

                          中英对照

                          可以针对共享单个 global 对象但具有单独 I/O 接口的单个​​运行 Node.js 实例创建和运行多个 REPL 实例。

                          
                          

                          返回顶部