2017-07-14 9 views
0

Node.js、ExpressおよびPugを使用して簡単なWebサーバーを作成しています。NodeJS、ExpressおよびPugベースのアプリケーションのPugエラー処理

package.json:

{ 
    "name": "testing", 
    "version": "0.0.7", 
    "private": true, 
    "scripts": { 
    "start": "node ./bin/www" 
    }, 
    "dependencies": { 
    "body-parser": "~1.17.1", 
    "command-line-args": "^4.0.6", 
    "cookie-parser": "~1.4.3", 
    "debug": "~2.6.3", 
    "express": "~4.15.2", 
    "less-middleware": "~2.2.0", 
    "merge": "^1.2.0", 
    "morgan": "~1.8.1", 
    "pug": "^2.0.0-rc.2", 
    "request": "^2.81.0", 
    "serve-favicon": "~2.4.2", 
    "sprintf-js": "^1.1.1", 
    "tracer": "^0.8.9" 
    } 
} 

サーバが起動コマンドで起動されます。アプリは非既存のパグミックスインを呼び出すようなエラーが含まれている場合

npm start 

.container 
    +hossa 

エラーテキストがレンダリングされ、クライアントブラウザに次のように表示されます。

/Projects/.../status.pug:2 1| .container > 2| +hossa 3| 4| 5| div.page.container.hidden#status(text="Status") pug_mixins.hossa is not a function 

これは問題ありませんが、改善される可能性があります。

主な問題:500コード以外のログ出力にエラーはありません。

質問は以下のとおりです。サーバー側で完全なスタック情報を含むエラーをログに記録するために必要とされるどのようなコード、MODUL、および/または起動オプション

  • ユーザーフレンドリーなメッセージを表示するにはどうすればそれを管理できますか?
+0

あなたは[**エラーハンドラ**](http://expressjs.com/en/guide/error-handling.html)を使用する必要があります。 –

答えて

0

Aikon Mogwaiがコメントしたとおり、私は単に適切なエラーハンドラを追加することを忘れていました。このような

何か:

app.use(function(err, req, res, next) { 

    // very basic! 
    console.error(err.stack); 

    // show user some message - for Ajax requests which expects a specific format 
    res.send(JSON.stringify({ok: false, message: err.message})); 


    // OR 

    // more advanced: 
    // check error type, context etc. and act accordingly 
    // - log message 
    // - send appropriaty error page etc. 
    // - eventually use next handler 
    // - set res.status 
    // sth. like this 

    if (req.xhr) { 
     res.status(500).send({ error: 'Something failed!' }); 
    } else { 
     next(err); 
    } 
}); 
関連する問題