Вывод данных узла REPL на той же строке - PullRequest
0 голосов
/ 02 сентября 2018

Я создаю приложение CLI с nodejs с собственным REPL. Тупой образец:

const repl = require('repl')
const myApp = require('myApp')
repl.start({
  eval: (input, context, filename, callback) => {
      const result = myApp(input)
      callback(null, result)
  },
  writer: (result) => result 
         ? 'my result: ' + result
         : ''  // <--- empty result
})

Все хорошо, но для каждого ответа приложения создается новая строка. Я хотел бы переопределить это поведение и решить, создавать ли новую строку или нет.

Пример Давайте представим приложение калькулятором:

$ node index.js
add 5
add 3
result
8

Поскольку команда add не имеет никакого результата, новая команда должна быть вставлена ​​в следующую строку. Однако из приведенного выше кода я получаю следующее:

$ node index.js
add 5

add 3

result
8

с пустой строкой, добавленной после любого вызова 0 add.

Как я могу предотвратить это?

1 Ответ

0 голосов
/ 04 сентября 2018

Итак, я обнаружил, что есть параметр, который я могу установить, ignoreUndefined. Если true, когда вы вызываете callback(null, undefined) (пустой регистр результатов), новая строка не добавляется.

Таким образом, в приведенном выше примере:

const repl = require('repl')
const myApp = require('myApp')
repl.start({
  ignoreUndefined: true,
  eval: (input, context, filename, callback) => {
      const result = myApp(input)
      callback(null, result)
  },
  writer: (result) => result 
         ? 'my result: ' + result
         : undefined  // <--- empty result
})

документы: https://nodejs.org/api/repl.html

аналогичный вопрос: node.js REPL "undefined"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...