代码之家  ›  专栏  ›  技术社区  ›  Shuai Li

总是在下一个函数后发送错误页

  •  0
  • Shuai Li  · 技术社区  · 8 年前

    我坐4.16.3快车。

    首先,此代码工作正常:

    const express = require('express')
    const router = express.Router()
    
    let app = express()
    
    router.use((req, res, next) => {
        console.log('hi, express')
        next()
    })
    
    app.use(router)
    
    app.all('*', (req, res) => {
        res.send("hello, world")
    })
    
    app.listen(8075, function () {
      console.log('listening localhost:8072')
    })
    

    但当我试图设置参数时 next() :

    const express = require('express')
    const router = express.Router()
    
    let app = express()
    
    router.use((req, res, next) => {
      next('hello, express')       ----------------mark
    })
    
    app.use(router)
    
    app.all('*', (msg, req, res) => {
        console.log(msg)
        res.send(msg)
    })
    
    app.listen(8075, function () {
      console.log('listening localhost:8072')
    })
    

    响应始终是错误页:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>Error</title>
        </head>
        <body>
            <pre>hello, express</pre>
        </body>
    </html>
    

    我只是在下一个函数中添加了一个参数,但它似乎已损坏了Express路由器。

    对参数使用next()的正确方法是什么?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Ashraful Islam    8 年前

    req next()

    router.use((req, res, next) => {
        req.data = { title: 'your sample data' };
        next();
    });
    
    app.all('*', (req, res) => {
        console.log(req.data);
    });
    

    request app.all()

        2
  •  0
  •   Quinn Mortimer    8 年前
    推荐文章