我无法理解为什么我在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个字符吗?