我在 MEAN.js 项目中使用 x 射线库,但无法修复此错误消息:
错误:结束后写入 在 writeAfterEnd (_stream_writable.js:166:12) 在 Writable.write (_stream_writable.js:211:5) 在 Writable.end (_stream_writable.js:446:10) 在 _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 at C:\src\je\foodleWeb\node_modules\x-ray\lib\walk.js:56:12 at callback (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\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\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
这是我的代码,我使用内置函数“管道”将响应传递回 $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);
}
我尝试使用以下方法来捕获异常,但它不能正常工作,因为它是基于 Promise 的。我想要类似的东西以防止应用程序崩溃。
也许我可以将我的代码包装成一个函数并传入一个回调或类似的东西......
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));
}