javascript - Node readline 接口(interface)以乘法方式重复每个字符

标签 javascript node.js typescript

我已经创建了一个 Node readline 接口(interface)

this.io = readline.createInterface({ 
      input: process.stdin, 
      output: process.stdout,
      completer:(line:string) => { //adapted from Node docs
        const hits = commands.filter((c) => c.startsWith(line.toUpperCase()));
        return [hits.length ? hits : commands, line];
      }
    });

第一次在控制台输入时,正常显示,如> go north。然而,在我接受这个输入后,在我的其余代码中使用它,并再次用 readline 提示用户,它看起来像 > ggoo nnoorrtthh,如果我第三次提示它看起来像> gggooo nnnooorrrttthhh。我在创建界面时尝试使用 terminal:false 但它没有改变任何东西。有没有什么东西让我的 readline 重复我以乘法方式键入的字符?

编辑:我还应该补充一点,当我将用户的输入解析到我的代码中时,我得到了正确的输出(它总是只返回“向北走”),但是它实际上输入了两次用户输入,然后输入了三次次等。

处理输入的代码:

let arg = line.substr(firstSpace+1);
        let shouldProceed = this.handler(cmd, arg); //call handler function!
        if(shouldProceed){
          this.io.prompt();
        } else {
          this.io.close();
        }  
      } 
      else {
        console.log('Invalid command. Commands are:', commands.join(', '));
        this.io.prompt();
      }

shouldProceed 始终为真。如果用户键入“退出”,则 io 将关闭。

最佳答案

我也有这个问题。现在刚修好。如果您的应用程序中有多个 readline.createInterface,就会发生这种情况。或者至少您必须确保在使用之前删除其他创建的界面。

重复的字符数取决于你创建了多少个界面

关于javascript - Node readline 接口(interface)以乘法方式重复每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48494624/

相关文章:

javascript - 如何使用带有源文件符号路径的 ES6 导入功能?

javascript - 将 URI 转换为 Windows 路径格式

javascript - Ractive JS 和 jquery 插件 - 访问/操作数据

javascript - 如何获取对象范围之外的回调事件?

node.js - 在哪里以 Angular 存储客户端数据,稍后在 REST-API 中用于获取信息

node.js - 如何重定向到node.js中的 "current"页面(无中间件)

javascript - Babylonjs typescript 竞争条件?

php - 检测到javascript后重定向

javascript - 如何使用requestAnimationFrame?

javascript - 如何使用 OAuth2 在客户端 angularjs 应用程序中存储 clientId 和 clientSecret?