2016-07-07 4 views
0

Я использую рентгеновскую библиотеку в моем проекте MEAN.js, и я не могу исправить это сообщение об ошибке:запись после конца ошибки с помощью рентгена

Error: write after end at writeAfterEnd (_stream_writable.js:166:12) at Writable.write (_stream_writable.js:211:5) at Writable.end (_stream_writable.js:446:10) at _stream_object (C:\src\je\foodleWeb\node_modules\x-ray\lib\stream.js:46:16) at next (C:\src\je\foodleWeb\node_modules\x-ray\index.js:137:11) at 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) at C:\src\je\foodleWeb\node_modules\x-ray\lib\walk.js:49:9 at C:\src\je\foodleWeb\node_modules\x-ray\index.js:232:24 at next (C:\src\je\foodleWeb\node_modules\x-ray\index.js:138:11) at 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) at C:\src\je\foodleWeb\node_modules\x-ray\lib\walk.js:39:11 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) at C:\src\je\foodleWeb\node_modules\x-ray\lib\walk.js:49:9 at C:\src\je\foodleWeb\node_modules\x-ray\index.js:212:18 at next (C:\src\je\foodleWeb\node_modules\x-ray\index.js:138:11) at 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

Это мой код, где я с помощью встроенной в функции «трубу», чтобы передать ответ обратно $ 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)); 
} 
+0

Я мог бы найти решение, не используя функцию трубы и создав ответ таким образом: return res.status (200) .json (data); – Rober

ответ

1

скопировать мое решение от комментариев, как никто, кажется, обеспечивают работу вокруг

Я мог бы найти решение, не используя функцию pipe и создав ответ таким образом: return res.status (200) .json (data);