Nodejs readline给出了一些错误

Nodejs readline giving some error

我想逐行读取文件,并根据每行中的数据对数据进行分类。

var rd = readline.createInterface({
 input: fs.createReadStream('/home/user/Desktop/text.txt'),
 output: process.stdout,
 console: false
});

执行此行时,将在终端中读取并打印文件。

但是当我尝试使用 readline 逐行读取文件时出现错误。

rd.on('line', (input) => {
console.log(input);
});

我收到以下错误。

`Interface {
 _sawReturnAt: 0,
 isCompletionEnabled: true,
 _sawKeyPress: false,
 _previousKey: 
 { sequence: '\n',
 name: 'enter',
 ctrl: false,
 meta: false,
 shift: false },
 domain: 
 Domain {
 domain: null,
 _events: { error: [Function: debugDomainError] },
 _eventsCount: 1,
 _maxListeners: undefined,
 members: [] },
 _events: { line: [ [Function], [Function], [Function] ] },
 _eventsCount: 1,
 _maxListeners: undefined,
 output: 
  WriteStream {
    connecting: false,
    _hadError: false,
    _handle: 
     TTY {
     bytesRead: 0,
    _externalStream: {},
    fd: 9,
    writeQueueSize: 0,
    owner: [Circular],
    onread: [Function: onread] },
 _parent: null,
 _host: null,
 _readableState: 
  ReadableState {
    objectMode: false,
    highWaterMark: 16384,
    buffer: [Object],
    length: 0,
    pipes: null,
    pipesCount: 0,
    flowing: null,
    ended: false,
    endEmitted: false,
    reading: false,
    sync: true,
    needReadable: false,
    emittedReadable: false,
    readableListening: false,
    resumeScheduled: false,
    defaultEncoding: 'utf8',
    ranOut: false,
    awaitDrain: 0,
    readingMore: false,
    decoder: null,
    encoding: null },
 readable: false,
 domain: null,
 _events: 
  { end: [Object],
    finish: [Function: onSocketFinish],
    _socketEnd: [Function: onSocketEnd],
    resize: [Object] },
 _eventsCount: 4,
 _maxListeners: undefined,
 _writableState: 
  WritableState {
    objectMode: false,
    highWaterMark: 16384,
    needDrain: false,
    ending: false,
    ended: false,
    finished: false,
    decodeStrings: false,
    defaultEncoding: 'utf8',
    length: 0,
    writing: false,
    corked: 0,
    sync: false,
    bufferProcessing: false,
    onwrite: [Function: bound onwrite],
    writecb: null,
    writelen: 0,
    bufferedRequest: null,
    lastBufferedRequest: null,
    pendingcb: 1,
    prefinished: false,
    errorEmitted: false,
    bufferedRequestCount: 0,
    corkedRequestsFree: [Object] },
 writable: true,
 allowHalfOpen: false,
 destroyed: false,
 _bytesDispatched: 22151,
 _sockname: null,
 _writev: null,
 _pendingData: null,
 _pendingEncoding: '',
 server: null,
 _server: null,
 columns: 80,
 rows: 24,
 _type: 'tty',
 fd: 1,
 _isStdio: true,
 destroySoon: [Function],
 destroy: [Function] },
 input: 
 ReadStream {
 _readableState: 
  ReadableState {
    objectMode: false,
    highWaterMark: 65536,
    buffer: [Object],
    length: 0,
    pipes: null,
    pipesCount: 0,
    flowing: false,
    ended: true,
    endEmitted: true,
    reading: false,
    sync: false,
    needReadable: false,
    emittedReadable: false,
    readableListening: false,
    resumeScheduled: false,
    defaultEncoding: 'utf8',
    ranOut: false,
    awaitDrain: 0,
    readingMore: false,
    decoder: null,
    encoding: null },
    readable: false,
     domain: 
    Domain {
    domain: null,
    _events: [Object],
    _eventsCount: 1,
    _maxListeners: undefined,
    members: [] },
 _events: { end: [Object], data: [Function: onData] },
 _eventsCount: 2,
 _maxListeners: undefined,
 path: '/home/user/Desktop/text.txt',
 fd: null,
 flags: 'r',
 mode: 438,
 start: undefined,
 end: undefined,
 autoClose: true,
 pos: undefined,
 bytesRead: 31,
 destroyed: true,
 closed: true },
 historySize: 30,
 crlfDelay: 100,
_prompt: '> ',
 terminal: true,
 line: '',
 cursor: 0,
 history: [ '1,2,3', '4,8,4,8', '2,2,2,2', '1,2,3,4' ],
 historyIndex: -1,
 prevRows: 0,
 paused: true,
 closed: true }`

请帮忙,我是新手。

您的代码看起来不错,但您使用的是 Node.js REPL 而不是 运行 从文件中获取代码,这就是您看到此行为的原因。

Node.js REPL(当你在终端输入 node 时得到的)将存储变量。但是,当仅使用标识符时,也会返回该值。您看到的不是错误,而是 rd 对象。

Node.js REPL 非常适合测试,但是,除非您有使用它的特定原因,否则最好的办法是创建一个 app.js 文件,将您的代码添加到其中,然后运行 node app.js.

如果您确实需要使用 REPL 编写多行代码,请确保在初始化后键入 .editor,以便正确解释空格等。

此外,7.7.2 文档中 console 不是 createInterface 期望的选项,因此可以将其删除。在您的特定示例中,您还可以删除 output: process.stdout,因为您使用 line 事件

记录每一行