代码之家  ›  专栏  ›  技术社区  ›  Stav Alfi

如何正确编写nodejs转换流?

  •  0
  • Stav Alfi  · 技术社区  · 4 年前

    /Users/stavalfi/projects/nc/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:261
      var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb
               ^
    Error: write after end
        at writeAfterEnd (/Users/stavalfi/projects/nc/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:261:12)
        at DerivedLogger.Writable.write (/Users/stavalfi/projects/nc/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:305:21)
        at DerivedLogger.value (/Users/stavalfi/projects/nc/node_modules/winston/lib/winston/logger.js:67:18)
        at DerivedLogger.<computed> [as info] (/Users/stavalfi/projects/nc/node_modules/winston/lib/winston/create-logger.js:81:14)
        at Object.info (/Users/stavalfi/projects/nc/packages/log/src/loggers.ts:47:11)
        at /Users/stavalfi/projects/nc/packages/nc/src/index.ts:23:11
    

    代码:(最小但不完整)

      class Transform1 extends Transform {
        constructor() {
          super({
            readableObjectMode: true,
            writableObjectMode: true,
          })
        }
    
        _transform(chunk, _encoding, callback) {
          this.push({
            level: 'info',
            message: chunk.toString(),
          })
    
          callback()
        }
      }
    
      const subprocess = execa.command(`some task`, {
        stdio: 'pipe',
      })
    
      if (subprocess.stdout) {
        subprocess.stdout.pipe(new Transform1()).pipe(winstonLogger)
      }
    

    这个错误意味着什么?我怎样才能解决这个问题?

    0 回复  |  直到 4 年前
    推荐文章