Как я могу заставить Node REPL печатать только результат?

Я хочу запустить скрипт используя .load myFile.js но я не хочу печатать все, что находится в файле, только значение / результат того, что является файлом. Я использую 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
>

1 ответ

Решение

Если вы в порядке с кодом, работающим внутри текущей области, просто eval Это:

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

Если вы хотите новую сферу, vm.runInNewContext (это не вопрос безопасности, только чистота объема):

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

Глобалы как require может быть передан во втором аргументе.

Другие вопросы по тегам