node.js - chai-http 结束后写入

标签 node.js chai

我有一个 server-app 从客户端接收音频流。我正在尝试使用 chai/chai-http 测试应用程序,但它给了我这个错误:

[Error: write after end]

有什么问题?

代码:

var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('../server-app');
var should = chai.should();
var fs = require('fs');

chai.use(chaiHttp);


describe('server', function() {
  it('should work..', function (done){
    var req = chai.request(server).post('/speech');
    fs.createReadStream('./test.wav').pipe(req);
    req.end(function (err,res){
        console.log(err);//outputs: [Error: write after end]
        done();
    });
  });
});

最佳答案

您在流完成将数据推送到请求之前调用 req.end

我会做以下事情:

var readstream = fs.createReadStream('./test.wav');
readstream.pipe(req);

readstream.on('close', someFunction);
readstream.on('end', someFunction);

并在流的关闭结束 事件中调用req.end。您在发出这些事件中的任何一个之前调用 req.end。

关于node.js - chai-http 结束后写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562260/

相关文章:

node.js - 在 Node js 应用程序中使用 cluster js 时,socketcluster 是否多余?

node.js - NodeJS - 如何增加内存堆大小?

javascript - 有没有办法重组node_modules?

chai - 运行自定义 Chai 断言时 Cypress 挂起循环

node.js - Node : How to stub AWS s3 getobject with sinon

javascript - 如何在调用时从 spy.on(object, 'funcName') 返回虚假数据?

javascript - 如何使 ChaiJS 'expect' 函数在 NodeJS 'test' 文件夹内的所有文件中可用?

node.js - 是否可以使用 pg-promise 在同一查询中使用多个数据库?

node.js - 如何使用 puppeteer 禁用 webRTC 本地 IP 泄漏?

javascript - 如何使用 mongoose、mocha 和 chai 编写单元测试来向 mongodb 插入和检索对象?