NodeJS readline-sync模块似乎无法捕获整个用户输入

时间:2018-11-05 04:51:16

标签: node.js readline

我无法理解为什么我在nodejs应用程序中使用的readline-sync module不能按预期运行。我希望命令行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)的情况下,人们希望可以看到输入的内容回显了。但是,在某些情况下,我必须按两次Enter键才能使Node应用接受输入。然后,当它确实接受它时,就好像mongo_uri变量没有获得整个输入。相反,控制台将输出所输入的mongoDB连接uri字符串的某种截断版本。看起来像这样:

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个字符吗?

0 个答案:

没有答案