首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用through2在Node.js中向流发送数据时增加换行符

使用through2在Node.js中向流发送数据时增加换行符
EN

Stack Overflow用户
提问于 2015-09-30 13:33:21
回答 2查看 490关注 0票数 0

我正在通过溪流-冒险工作狂从NodeSchool。我将编写一个程序,将process.stdin流连接到使用through2模块创建的流中,然后将其输送到process.stdout。使用through2模块创建的流将将输入流字符转换为大写,并将其输送到process.stdout。下面是我的源代码:

代码语言:javascript
复制
var through = require('through2');
var write = function(buffer,encoding,next){
        var data = buffer.toString();
        this.push(data.toUpperCase() + '\n');
        next();
}
var end = function (done){
        done();
}
var stream = through(write,end);
process.stdin.pipe(stream).pipe(process.stdout);

问题是,在每8块字发送到流后,就会多打印一条换行符。下面是工作人员进行的验证的3个测试输出:

试验1:

代码语言:javascript
复制
TAP version 13
# (anonymous)
ok 1 stream-adventure verify YOURFILE.js
not ok 2 should be equal
  ---
    operator: equal
    expected:
      'METALKIND\nKORVEN\nOSIRIAN\nTHE ERGON\nTYTHONIAN\nLAND OF FICTION BEINGS\nSIRIAN\nKRAAL\nTHE FLOOD\nJADONDAN\n'
    actual:
      'METALKIND\nKORVEN\nOSIRIAN\nTHE ERGON\nTYTHONIAN\nLAND OF FICTION BEINGS\nSIRIAN\nKRAAL\n\nTHE FLOOD\n\nJADONDAN\n\n'
  ...
ok 3 successful exit code

1..3
# tests 3
# pass  2
# fail  1

#########################################
###   YOUR SOLUTION IS NOT CORRECT!   ###
#########################################

试验2:

代码语言:javascript
复制
TAP version 13
# (anonymous)
ok 1 stream-adventure verify YOURFILE.js
not ok 2 should be equal
  ---
    operator: equal
    expected:
      'THE BEAST\nANDROZANI TREE\nGAZTAK\nRAXACORICOFALLAPATORIAN\nMAYFLY\nSTIGORAX\nTHE TRICKSTER\nMEGARA\nMENTOR\nHAND OF OMEGA\n'
    actual:
      'THE BEAST\nANDROZANI TREE\nGAZTAK\nRAXACORICOFALLAPATORIAN\nMAYFLY\nSTIGORAX\nTHE TRICKSTER\nMEGARA\nMENTOR\n\nHAND OF OMEGA\n\n'
  ...
ok 3 successful exit code

1..3
# tests 3
# pass  2
# fail  1

#########################################
###   YOUR SOLUTION IS NOT CORRECT!   ###
#########################################

试验3:

代码语言:javascript
复制
TAP version 13
# (anonymous)
ok 1 stream-adventure verify YOURFILE.js
not ok 2 should be equal
  ---
    operator: equal
    expected:
      'QETESH\nPELUSHI\nLURMAN\nEVE\nATRAXI\nFLESHKIND\nDALEK\nGEE-JEE FLY\nHEADLESS MONK\nTHE DESTROYER\n'
    actual:
      'QETESH\nPELUSHI\nLURMAN\nEVE\nATRAXI\nFLESHKIND\nDALEK\nGEE-JEE FLY\n\nHEADLESS MONK\n\nTHE DESTROYER\n\n'
  ...
ok 3 successful exit code

1..3
# tests 3
# pass  2
# fail  1

#########################################
###   YOUR SOLUTION IS NOT CORRECT!   ###
#########################################

神秘的额外换行符的原因是什么?我如何修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 17:50:32

代码中的第4行将添加额外的换行符。要解决这个问题,您可以从下面更改第4行:

代码语言:javascript
复制
this.push(data.toUpperCase() + '\n');

对此:

代码语言:javascript
复制
this.push(data.toUpperCase());

此外,当您在终端中键入此内容时,流冒险课将打印它们的参考解决方案。

代码语言:javascript
复制
stream-adventure solution 
票数 1
EN

Stack Overflow用户

发布于 2015-10-01 19:22:58

不要添加'\n‘,它已经在流中了。我猜您得到的缓冲区不止一行,因此“\n”被随机添加。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32867508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档