const express = require('express');
const app = express();
app.use('/', (req, res,next) => {
res.send('Bid Request GET');
});
app.get('/', (req, res) => {
res.send('Bid T');
});
app.listen(3000, () => console.log('app listening on port 3000!'))
我是Node js的初学者。当我运行代码时,它仅显示app.use()
响应,而不显示app.get()
响应。
我很困惑。我也尝试过next()方法,但是没有用。该如何解决?
答案 0 :(得分:2)
这背后的主要原因是因为您已经在此处发送了响应:
app.use('/', (req, res,next) => {
res.send('Bid Request GET');
});
每个请求只能发送一个回复。
每个app.use
中间件都是可以访问请求,响应和下一个参数的功能。调用下一个函数时,它将在当前中间件之后执行中间件。
您还可以通过在请求或响应中创建变量来将数据从一种中间件传递到另一种中间件。对于Ex。
app.use('/', (req, res, next) => {
if(req.body.token !== 'abc') return res.sendStatus(503)
let someData = () => { .... SomeFunctionCode ... }
req.myVarible = someData // or res.myVariable = someData or anything
next()
})
但是推荐的传递值的方法是通过res.locals.myVariable
以下是完整示例:
app.use('/', (req, res, next) => {
if(req.body.token !== 'abc') return res.sendStatus(503)
let someData = () => { .... SomeFunctionCode ... }
req.locals.myVarible = someData
next()
})
app.get('/', (req, res) => {
res.send(res.locals.myVariable)
})