Модуль readline-sync NodeJS, кажется, не захватывает весь пользовательский ввод - PullRequest
0 голосов
/ 05 ноября 2018

Я не могу понять, почему модуль readline-sync , который я использую в своем приложении nodejs, не работает должным образом. Я хочу, чтобы конечный пользователь моего приложения nodejs из командной строки вставил строку подключения mongoDB в приглашение. Строка подключения выглядит примерно так - она ​​довольно длинная:

mongodb://<my username>:<my password>@cluster0-shard-00-00-xxxxx.mongodb.net:27017,cluster0-shard-00-01-xxxxx.mongodb.net:27017,cluster0-shard-00-02-xxxxx.mongodb.net:27017/?replicaSet=Cluster0-shard-0&ssl=true&authSource=admin

Я хочу захватить всю эту строку в команде с помощью метода question модуля readline-sync. Вот моя функция, которая использует метод readline-sync:

var rline = require('readline-sync');

function init() {

    var mongo_uri = rline.question("\n\nWhat is the connection string to your mongoDB database?");

    console.log(mongo_uri);

    return;
}

Можно было бы ожидать увидеть точно то, что было введено эхом назад по линии console.log(mongo_uri). Однако, в некоторых случаях, Я должен дважды нажать клавишу ввода, чтобы приложение Node приняло ввод . Затем, когда он это принимает, создается впечатление, что переменная mongo_uri не получает весь ввод. Вместо этого консоль выводит некоторую усеченную версию строки URI соединения mongoDB, которая была введена. Так это выглядит примерно так:

mongodb://<my username>:<my password>@cluster0-shard-00-00-vmfxs.mongodb.net:27017,cluster0-shard-00-01-vmfxs.mongodb.net:27017,cluster0-shard-00-0`

Обрезается после 128 символов. Итак, я подумал, может быть, это размер буфера или что-то в этом роде. Я добавил следующее в код, прежде чем использовать метод .question(), но это не помогло.

rline.setDefaultOptions({ bufferSize : 32768})

Есть идеи, почему я не вижу захвата длиннее 128 символов?

...