javascript - 在 Express 中显示每个请求的日志时间?

标签 javascript node.js datetime express momentjs

我这里有问题。我不知道为什么会这样。我把时间戳代码放在 Moment.js 库中,不仅是那个库,最近我手动创建了用于显示时间戳的代码,但是当我发送请求时,时间没有更新。 我把日期时间放在我的文件路径中。但这是在服务器文件中工作的。

比如

服务器.js

var express = require('express')
var app = express()
var moment = require('moment')

app.use(function(req, res, next){
  console.log(moment().format('HH:mm:ss') + ' From server.js') //Showing time now
  next();
  })

app.use('/', index)
app.listen(8001)

路由/index.js

var express = require('express')
var app = express()
var router = express.Router()
var moment = require('moment')
var timestamps = moment().format('HH:mm:ss')

router.get('/', function(req, res){
  console.log(timestamps + ' From routes/index.js')
})

module.exports = routes

我第一次开始测试我的代码 获取本地主机:8001/

我的系统时间显示 16:20:51

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./bin/www`
16:20:51 From Server.js
16:20:51 From routes/index.js

第二个请求我的系统时间显示 16:22:52

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./bin/www`
16:22:52 From Server.js
16:20:51 From routes/index.js

不,第二个请求仍然从第一个请求获取现有的时间日志,这只发生在路由中。但是在 server.js 中工作得很好

它发生是因为变量时间戳在函数之外吗?但是当我在没有变量的情况下运行时,它起作用了。

router.get('/', function(req, res){
  console.log(moment().format('HH:mm:ss') + ' From routes/index.js')
})

为什么会发生这种情况? 谢谢

最佳答案

您缓存时间戳值。

这样修改你的路由文件:

var express = require('express')
var app = express()
var router = express.Router()
var moment = require('moment')

router.get('/', function(req, res){
  var timestamps = moment().format('HH:mm:ss')
  console.log(timestamps + ' From routes/index.js')
})

module.exports = routes

您必须了解该文件在应用程序启动后一直包含在其中,直到它运行为止。这里唯一不时调用的部分是路由的函数处理程序:

function(req, res){
  var timestamps = moment().format('HH:mm:ss')
  console.log(timestamps + ' From routes/index.js')
}

关于javascript - 在 Express 中显示每个请求的日志时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198076/

相关文章:

javascript - Konva 文本边界

javascript - NodeJS,Express,我为什么要使用 app.enable ('trust proxy' );

postgresql - 如何选择一个数字作为 PostgreSQL 中日期添加函数的一部分放入 INTERVAL

javascript - 由于预检响应中存在 Access-Control-Allow-Methods,无法发送 PUT 请求

javascript - 模态被隐藏,但模态的 "history"被保留

Javascript setTimeout 性能与手动检查

node.js - Express 4 压缩

node.js - Docker 中的远程调试 Node 9

parsing - 我如何在 Golang 中解析这个日期?

sql - 如何部分存储日期值?