如何在Node.js的.editor模式下正确粘贴多行字符串?
在Node.js REPL的.editor模式下粘贴多行SQL字符串的正确方法
你遇到的问题是因为普通双引号字符串在JavaScript里不允许直接换行,而.editor模式会严格解析输入的代码语法。以下是几种可行的解决办法:
方法一:使用ES6模板字符串(推荐)
模板字符串用反引号(``)包裹,原生支持多行内容,不需要任何转义,是最省心的方式:
> .editor // Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel) s=`with docs as ( SELECT "documentNumber" )`
粘贴完成后按Ctrl+D就能正常执行,不会触发语法错误。
方法二:双引号字符串换行时加反斜杠转义
如果一定要用双引号,需要在每行末尾添加反斜杠(\)来转义换行符:
> .editor // Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel) s="with docs as (\ SELECT\ \"documentNumber\"\ )"
注意每行末尾的反斜杠必须是该行最后一个字符,不能有空格。
方法三:多行字符串拼接
也可以用加号(+)把每行字符串拼接起来:
> .editor // Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel) s="with docs as (" + "SELECT" + " \"documentNumber\""
不过这种写法比较繁琐,不如模板字符串直观。
本质原因是Node.js的REPL会把.editor模式下的输入当作完整的JavaScript代码解析,普通双引号字符串不允许未经转义的换行,而模板字符串从ES6开始就支持原生多行,Node.js v20完全兼容这个特性,所以优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者jcollum
相关产品推荐
相关产品推荐

