Node.js 使用x射线在结束后写入错误

Node.js 使用x射线在结束后写入错误,node.js,meanjs,x-ray,Node.js,Meanjs,X Ray,我正在MEAN.js项目中使用x射线库,无法修复此错误消息: 错误:结束后写入 在writeAfterEnd(_stream_writeable.js:166:12) 在Writable.write(_stream_Writable.js:211:5) 在Writable.end(_stream_Writable.js:446:10) at\u stream\u对象(C:\src\je\foodleWeb\node\u modules\x-ray\lib\stream.js:46:16) 下一步

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

错误:结束后写入 在writeAfterEnd(_stream_writeable.js:166:12) 在Writable.write(_stream_Writable.js:211:5) 在Writable.end(_stream_Writable.js:446:10) at\u stream\u对象(C:\src\je\foodleWeb\node\u modules\x-ray\lib\stream.js:46:16) 下一步(C:\src\je\foodleWeb\node\u modules\x-ray\index.js:137:11) 在C:\src\je\foodleWeb\node\u modules\x-ray\index.js:242:7 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:56:12 回调时(C:\src\je\foodleWeb\node\u modules\batch\index.js:147:12) 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:49:9 在C:\src\je\foodleWeb\node\u modules\x-ray\index.js:232:24 下一步(C:\src\je\foodleWeb\node\u modules\x-ray\index.js:138:11) 在C:\src\je\foodleWeb\node\u modules\x-ray\index.js:242:7 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:56:12 回调时(C:\src\je\foodleWeb\node\u modules\batch\index.js:147:12) 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:39:11 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:56:12 回调时(C:\src\je\foodleWeb\node\u modules\batch\index.js:147:12) 在C:\src\je\foodleWeb\node\u modules\x-ray\lib\walk.js:49:9 在C:\src\je\foodleWeb\node\u modules\x-ray\index.js:212:18 下一步(C:\src\je\foodleWeb\node\u modules\x-ray\index.js:138:11) 在C:\src\je\foodleWeb\node\u modules\x-ray\index.js:242:7 在C:\src\je\foodleWeb\node\u 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));
}

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


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

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


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

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