1

根据文档morgan接受两个参数 - 格式字符串和选项对象。选项对象提到:

即时

根据请求而不是响应写入日志行。这意味着即使服务器崩溃也会记录请求,但无法记录来自响应的数据(如响应代码、内容长度等)。

我不清楚,immediate因为我根本不使用该options对象,所以默认值是什么。它是一个布尔值吗?

在我的 Mac 上,我可以看到我的 NodeJS 应用程序的日志。当作为二进制文件移植到 Windows 时,所有响应项(状态、内容长度和响应时间)都不会报告(即显示为破折号)。

你能建议吗?

4

1 回答 1

1

查看源代码会发现默认选项对象是{}.

 59  function morgan (format, options) {
 60    var fmt = format
 61    var opts = options || {}                // opts == {}

因此,要回答这个问题,它不是布尔值,而是因为沿途处理事情的方式

133  if (immediate) {                         // immediate == undefined
134    // immediate log
135    logRequest()
136  } else {
137    // record response start
138    onHeaders(res, recordStartTime)
139
140    // log when response finished
141    onFinished(res, logRequest)
142  }

默认值为falsey ,因此在响应完成后进行日志记录。

于 2018-10-25T21:38:55.933 回答