Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Express.js中将值从中间件传递到路由? const router=require('express')。router() const loggermdleware=(请求、恢复、下一步)=>{ console.log(`${req.method}${req.path}`) req.locals.isLogged=true 下一个() } 路由器.get('/color',loggermdleware,(req,res)=>{ console.log(请求本地人islog) res.send(“#ff0000”); })_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何在Express.js中将值从中间件传递到路由? const router=require('express')。router() const loggermdleware=(请求、恢复、下一步)=>{ console.log(`${req.method}${req.path}`) req.locals.isLogged=true 下一个() } 路由器.get('/color',loggermdleware,(req,res)=>{ console.log(请求本地人islog) res.send(“#ff0000”); })

Javascript 如何在Express.js中将值从中间件传递到路由? const router=require('express')。router() const loggermdleware=(请求、恢复、下一步)=>{ console.log(`${req.method}${req.path}`) req.locals.isLogged=true 下一个() } 路由器.get('/color',loggermdleware,(req,res)=>{ console.log(请求本地人islog) res.send(“#ff0000”); }),javascript,node.js,express,Javascript,Node.js,Express,当我运行上面的代码时,节点编译器会给我一个关于TypeError的警告:无法设置undefined的属性'islogge'。哪里出错?您需要将局部变量设置为resnotreq const router = require('express').Router() const loggerMiddleware = (req, res, next) => { console.log(`${req.method} ${req.path}`) res.locals.isLogged = tr

当我运行上面的代码时,节点编译器会给我一个关于
TypeError的警告:无法设置undefined的属性'islogge'。哪里出错?

您需要将局部变量设置为
res
not
req

const router = require('express').Router()
const loggerMiddleware = (req, res, next) => {
  console.log(`${req.method} ${req.path}`)
  res.locals.isLogged = true
  next()
}

router.get('/color', loggerMiddleware, (req, res) => {
  console.log(res.locals.isLogged)
  res.send('#ff0000');
})

我不熟悉如何将数据从中间件传递到路由,但这看起来像是一个简单的javascript问题。看起来
req.locals
未定义。首先检查
req.locals
是否未定义。如果未定义,则通过
req.locals={}
初始化它。然后设置
req.locals.isLogged=true

首先检查是否定义了
req.locals
,如果没有,则将其定义为
{}
如下尝试。请求['locals']['isLogged']=true