【问题标题】:strongloop loopback custom error handlingstrongloop loopback 自定义错误处理
【发布时间】:2018-03-23 23:27:53
【问题描述】:

我目前正在使用环回 3.2.1 我面临的问题是访问令牌过期时在日志文件中记录未处理的错误。做谷歌搜索我遇到了这个Unhandled error 这里提到我们可以有自定义的错误记录中间件。我按照那里提到的说明进行操作,并为此参考了文档。但是我收到以下错误:

错误:无法应用 .../server/middleware.staging.json:阶段“final:after”中的中间件“./middleware/error-logger”未在主配置中定义。

当前中间件.staging.json:

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

服务器/中间件/error-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);
  };
}

我在这里错过了什么?

【问题讨论】:

    标签: node.js logging strongloop loopback


    【解决方案1】:

    终于在查看了加载loopback配置文件的代码后发现了它。 Loopback 当前正在读取所有默认配置文件,然后将它们与 env 特定文件合并。因此,任何需要进行的配置更改都必须在默认文件中进行,并在 env 特定文件中设置值,以使更改按要求进行。例如,在我的情况下,我试图将中间件添加到 middleware.live.json 但没有将其添加到默认的 middleware.json 文件中。因此,在执行 mergePhaseConfig() 时,存在于 env 特定文件中的值并在不存在的默认文件中进行搜索。 在默认文件中添加中间件条目解决了这个问题。这在文档中已经提到过,但今天我没有想到。

    【讨论】:

    • 嗨,阿尤什。你能解释一下你是如何解决这个问题的吗?它到底在哪里说我们必须更改默认文件?你能分享更多信息吗?
    • 你能看看这个问题吗? stackoverflow.com/questions/52995564/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2011-01-29
    • 2010-12-07
    相关资源
    最近更新 更多