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!'))
我是nodejs的初学者。当我运行代码时,它只显示app.use()
响应,而不是app.get()
响应。
我很困惑。我也尝试了next((方法,但不起作用。如何解决这个问题?
这背后的主要原因是因为您已经在这里发送了响应:
app.use('/', (req, res,next) => {
res.send('Bid Request GET');
});
每个请求只能发送一个响应。每个app.use
中间件都是一个可以访问请求、响应和下一个参数的函数。当调用下一个函数时,它将执行当前中间件之后的中间件。
您还可以通过在请求或响应中创建变量,将数据从一个中间件传递到另一个中间件。例如
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)
})