如何让 Node REPL 只打印结果?

How can I make the Node REPL print the result only?

我想 运行 使用 .load myFile.js 的脚本,但我不想打印文件中的所有内容,只打印文件的 value/result。我正在为我的项目使用 Electron、xterm.js 和 node-pty。

例如,使用此代码:

// type your code here

function sum(x, y) {
  return x + y
}

sum(2, 3)

我得到这样的结果:

> // type your code here
undefined
> function sum(x, y) {
...   return x + y
... }
undefined
> sum(2, 3)
5
>

如果您对当前范围内的代码 运行 没意见,只需 eval 它:

> eval(fs.readFileSync('myFile.js', 'utf8'))
5

如果你想要一个新的范围,vm.runInNewContext(这不是安全问题,只是范围清洁):

> vm.runInNewContext(fs.readFileSync('myFile.js', 'utf8'))
5

require can be passed in its second argument 这样的全局变量。