Javascript 在Express中显示每个请求的日志时间?
我这里有些问题。我不知道为什么会这样。我将时间戳代码放在Moment.js库中,不仅放在该库中,最近我手动创建用于显示时间戳,但当我发送请求时,时间不会更新。 我把datetime放在我的文件路径中。但这是服务器文件中的工作 比如说 server.js routes/index.jsJavascript 在Express中显示每个请求的日志时间?,javascript,node.js,datetime,express,momentjs,Javascript,Node.js,Datetime,Express,Momentjs,我这里有些问题。我不知道为什么会这样。我将时间戳代码放在Moment.js库中,不仅放在该库中,最近我手动创建用于显示时间戳,但当我发送请求时,时间不会更新。 我把datetime放在我的文件路径中。但这是服务器文件中的工作 比如说 server.js routes/index.js var express=require('express')) var app=express() var router=express.router() var力矩=要求(‘力矩’) var timestamp
var express=require('express'))
var app=express()
var router=express.router()
var力矩=要求(‘力矩’)
var timestamps=moment().format('HH:mm:ss')
router.get('/',函数(req,res){
log(timestamps+'来自routes/index.js')
})
module.exports=路由
我第一次开始测试我的代码
获取本地主机: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中可以很好地使用
发生这种情况是因为函数外部的变量时间戳吗?但是当我在没有变量的情况下运行时,它是有效的。
为什么会发生这种情况?
谢谢您可以缓存时间戳值 按以下方式修改路由文件:
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')
}
你在正确的轨道上!这是因为您在中间件*之外定义了
时间戳
。中间件是您注册到路由的函数,它会在与指定url匹配的每个请求上被调用。因此,当您在中间件中调用moment()
时,它将返回请求的实际日期和时间,因为此函数仅在请求处理过程中执行。而在您的情况下,在函数外部定义了时间戳
的代码只执行一次-当您需要routes/index.js
时,在应用程序启动时执行一次。
但您仍然可以使用变量,只需在正确的位置定义它:
var express = require('express')
var app = express()
var router = express.Router()
var moment = require('moment')
var format = 'HH:mm:ss';
router.get('/', function(req, res){
var timestamps = moment().format(format)
console.log(timestamps + ' From routes/index.js')
})
module.exports = routes
啊,我明白了,不管怎样,很好的解释。它工作+1谢谢:D
function(req, res){
var timestamps = moment().format('HH:mm:ss')
console.log(timestamps + ' From routes/index.js')
}
var express = require('express')
var app = express()
var router = express.Router()
var moment = require('moment')
var format = 'HH:mm:ss';
router.get('/', function(req, res){
var timestamps = moment().format(format)
console.log(timestamps + ' From routes/index.js')
})
module.exports = routes