Я не могу понять, почему модуль 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 символов?