节点readline模块没有“打开”功能?

Sem*_*ide 5 javascript methods module filereader node.js

我正在尝试创建一个节点应用程序,该应用程序使用“ readline”模块逐行读取文本文件,并将其打印到控制台。

  var lineReader = require('readline');
  lineReader.createInterface({
    input: fs.createReadStream('./testfile')
  });
  lineReader.on('line', function(line){
    console.log(line);
  });
Run Code Online (Sandbox Code Playgroud)

根据模块的文档,应该有一个“ on”方法。但是,当我记录我创建的readline对象的实例时,在任何地方都看不到“ on”方法:

{ createInterface: [Function],   Interface:    { [Function: Interface]
     super_:
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },   
emitKeypressEvents: [Function: emitKeypressEvents],   
cursorTo: [Function: cursorTo],   
moveCursor: [Function: moveCursor],   
clearLine: [Function: clearLine],   
clearScreenDown: [Function: clearScreenDown],   
codePointAt: [Function: deprecated],   
getStringWidth: [Function: deprecated],   
isFullWidthCodePoint: [Function: deprecated],   
stripVTControlCharacters: [Function: deprecated] }
Run Code Online (Sandbox Code Playgroud)

因此,自然地,当我调用时lineReader.on(),我得到一个错误,指出该函数不存在。

我正在严格按照文档进行操作……我缺少什么?on方法在哪里?

非常感谢您抽出宝贵的时间。

Que*_*tin 5

继续阅读文档,直到找到带有context的示例

var readline = require('readline'),
    rl = readline.createInterface(process.stdin, process.stdout);

rl.setPrompt('OHAI> ');
rl.prompt();

rl.on('line', function(line) {
  switch(line.trim()) {
  // …
Run Code Online (Sandbox Code Playgroud)

on是方法返回的接口createInterface方法,而不是readline模块本身的方法。

  var lineReader = require('readline');

  // You need to capture the return value here
  var foo = lineReader.createInterface({
    input: fs.createReadStream('./testfile')
  });

  // … and then use **that**
  foo.on('line', function(line){
    console.log(line);
  });
Run Code Online (Sandbox Code Playgroud)