禁用 Node REPL 预评估?

6
在 Node (v16.7.0) 的 REPL 中,当我还没有完成输入语句时,Node 会尝试对我的语句进行评估。例如,如果我输入 2 + 2,它会在下一行模糊地显示一个 4,而我还没有按下回车键。有没有办法禁用这种行为?在大多数情况下,这不是问题;但是当我执行昂贵的操作时,REPL 会在我尝试完成语句输入时出现延迟或冻结。需要明确的是,问题不是解释器正在打印输出,而是它正在尝试在我完成输入之前对我的语句进行评估。提前感谢你的帮助!


这个回答解决了你的问题吗?防止Node.js repl打印输出 - esqew
1
谢谢,@esqew,但不,那并不能解决问题。我认为那只是防止输出被打印出来。问题不在于输出是否被打印出来;而是解释器在我还没输入完语句时就试图对其进行评估。 - jrc03c
你最终解决了这个问题吗?我在课堂上使用它,但我讨厌它在我问问题之前就显示答案。 - Andrew S
@AndrewS 很遗憾,我没有找到答案。 :( 对我有效的唯一方法是确保我的语句在执行之前是语法无效的。例如,如果您想键入 add(1, 2),则可以先键入 add()(即先关闭括号),然后返回并插入1和2,或者您可以从左到右逐个字符键入而不先关闭括号。在后一种情况下,该语句在最后一个字符之前是无效的,因此解释器不会尝试提前执行它。 - jrc03c
我将在他们的 GitHub 存储库中提出一个功能请求。 - Andrew S
1个回答

4
REPL库将其称为“预览”(在链接中搜索preview以获取更多信息)。我不知道如何使用命令行选项(或其他类型的配置选项)启动默认的Node REPL,以便不显示预览,但是可以使用REPL库本身,使用所有默认值(或您喜欢的任何值)并删除预览 - 有关此内容,请查看REPL库选项
一个基本示例是创建此脚本:
#!/usr/bin/env node

const repl = require('repl');

repl.start({
  preview: false
});

确保它也是可执行的(在Linux/Mac上从命令行中,可以通过终端使用chmod +x name-of-repl-script来实现),然后运行该脚本而不是直接使用node。 或者您可以使用node name-of-repl-script运行脚本(这里假设node是NodeJS REPL可执行文件,并且它在路径中)。


如果我只是从命令行启动REPL(即$> nodejs),并且不希望它显示预览,怎么办? - Andrew S
你可以创建一个脚本,就像发布的那个脚本一样,并使用它来替代默认的 nodejs。除非以后添加选项,否则这是我知道的唯一方法。关于此问题有一个PR:https://github.com/nodejs/help/issues/3967(所提出的解决方案本质上就是这个脚本)。 - paradoja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接