使用X射线写出结束后的错误

时间:2016-07-07 15:09:53

标签: node.js meanjs x-ray

我在MEAN.js项目中使用x射线库,我无法修复此错误消息:

  

错误:结束后写       在writeAfterEnd(_stream_writable.js:166:12)       在Writable.write(_stream_writable.js:211:5)       在Writable.end(_stream_writable.js:446:10)       at _stream_object(C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ stream.js:46:16)       在下一个(C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:137:11)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:242:7       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:56:12       在回调(C:\ src \ je \ foodleWeb \ node_modules \ batch \ index.js:147:12)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:49:9       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:232:24       在下一个(C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:138:11)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:242:7       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:56:12       在回调(C:\ src \ je \ foodleWeb \ node_modules \ batch \ index.js:147:12)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:39:11       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:56:12       在回调(C:\ src \ je \ foodleWeb \ node_modules \ batch \ index.js:147:12)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:49:9       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:212:18       在下一个(C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:138:11)       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ index.js:242:7       在C:\ src \ je \ foodleWeb \ node_modules \ x-ray \ lib \ walk.js:56:12

这是我的代码,我使用内置函数" pipe"将响应传递回$ http

export function show(req, res) {
  var stream = x(url,
    [{
      text: '.name'
    }])(function (err, data) {
      if (err) {
        console.log("[Xray] Error:", err);
      }
      else {
        return data;
      }
    }).stream();

  stream.pipe(res);
}

我尝试使用以下方法来捕获异常,但它并不能正常工作,因为它基于承诺。我想要有类似的东西,以防止应用程序崩溃。

也许我可以将我的代码包装成一个函数并传入一个回调或类似的东西......

function respondWithResult(res, statusCode) {
  statusCode = statusCode || 200;
  return function (entity) {
    if (entity) {
      res.status(statusCode).json(entity);
    }
  };
}

function handleError(res, statusCode) {
  statusCode = statusCode || 500;
  return function (err) {
    res.status(statusCode).send(err);
  };
}

export function index(req, res) {
  return Squeme.find().exec()
    .then(respondWithResult(res))
    .catch(handleError(res));
}

1 个答案:

答案 0 :(得分:1)

我从评论中复制我的解决方案,似乎没有人提供解决方案

我可能通过不使用管道函数并以这种方式构建响应来找到解决方案:return res.status(200).json(data);