2017-10-12 122 views
0

我目前使用的是loopback 3.2.1我正面臨的問題是在訪問令牌過期時未記錄在日誌文件中的未處理錯誤。做谷歌搜索我碰到這Unhandled error在這裏提到,我們可以有自定義錯誤記錄中間件。我遵循了那裏提到的指示,並且也參考了文檔。不過,我收到以下錯誤:strongloop loopback自定義錯誤處理

錯誤:無法應用.../server/middleware.staging.json:階段「final:after」中的中間件「./middleware/error-logger」未定義主要配置。

當前middleware.staging.json:

... 
"final": { 
    "loopback#urlNotFound": {} 
    }, 
    "final:after": { 
    "./middleware/error-logger": {}, 
    "strong-error-handler": { 
     "params": { 
     "debug": false, 
     "includeStack": false, 
     "log": false 
     } 
    } 
    } 

服務器/中間件/錯誤logger.js:

module.exports = function createErrorLogger(options) { 
    return function logError(err, req, res, next) { 
    // your custom error-logging logic goes here 

    const status = err.status || err.statusCode; 
    if (status >= 500) { 
     // log only Internal Server errors 
     console.log('Unhandled error for request %s %s: %s', 
     req.method, req.url, err.stack || err); 
    } 

    // Let the next error handler middleware 
    // produce the HTTP response 
    next(err); 
    }; 
} 

缺少什麼我在這裏?

回答

0

最後在查看加載loopback配置文件的代碼後發現它。 Loopback正在讀取所有的默認配置文件,然後將它們與env特定文件合併。因此,必須在默認文件中進行任何需要進行的配置更改,並在env特定文件中設置值,以使更改按要求運行。例如在我的情況下,我試圖將中間件添加到middleware.live.json,但未將其添加到默認的middleware.json文件中。因此,在執行mergePhaseConfig() env特定文件中存在的值,並在默認文件中搜索不存在的值。 在默認文件中添加中間件條目解決了問題。這已經在文件中提到,但今天它跳過了我的腦海。