如何读取用户输入并将其转换为字符串

时间:2015-07-14 20:11:27

标签: javascript node.js web-services serverside-javascript

我现在正在使用yodaspeak的API 我对代码做了一些小改动。 我希望用户输入要更改的单词 这是我的node.js代码

var YodaSpeak = require('yoda-speak');
var yoda = new YodaSpeak('hZy4MAVwtbmshFTdDuJSiMxKIxWsp1JSor1jsnuNeLjEVTnbXv');

console.log("Please enter the sentence you want to convert:");
process.stdin.on('readable', function() {
var chunk = process.stdin.read();
if (chunk !== null) {
  yoda.convert(toString(chunk),
function(err, result) {
if (!err) {
    console.log(result.toString());
} else {
    console.log(err);
}
})
  }
});

控制台总是告诉错误消息 我需要如何获取用户输入并将其转换为字符串并将其分配给变量。

提前BTW我们需要安装yoda-speak

%npm install --save yoda-speak

错误消息是

Please enter the sentence you want to convert
fjesil
[object undefined].  

1 个答案:

答案 0 :(得分:0)

yodaspeak不是您的问题所在,而是您从控制台接受文本的方式。 process.stdin.on(正在添加一个事件监听器,您感兴趣的事件名为data,而不是undefined。下面是console.log()在控制台中输入的每个单词的方法:

console.log("Please enter the sentence you want to convert");
process.stdin.setEncoding('utf8');
process.stdin.on('data', function (words) {
    console.log(words);
});

现在你所要做的就是把yodaspeak绑回去。

console.log("Please enter the sentence you want to convert");
process.stdin.setEncoding('utf8');
process.stdin.on('data', function (words) {
    yoda.convert(words, function (err, result) {
        if (!err) {
            console.log(result.toString());
        } else {
            console.log(err);
        }
    });
});