我这里有问题。我不知道为什么会这样。我把时间戳代码放在 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/