suchen

Heim  >  Fragen und Antworten  >  Hauptteil

next funktioniert in der Middleware mit Nodejs nicht richtig

Ich arbeite mit Nodejs und verwende Expressjs. Jetzt arbeite ich an der Middleware-Funktionalität und möchte wissen, was der „nächste“ Job im Middleware-Konzept ist. „Weiter zur nächsten Middleware“, aber was ist „nächste Middleware“? Ich habe versucht, den folgenden Code zu verwenden, und wenn ich auf „http://localhost:3000/“ klicke, wird in der Konsole und im Browser „Middleware 1 und Middleware 2“ angezeigt „Hallo Welt“ wird immer angezeigt, also bedeutet „nächste Middleware“ immer „Router-Handler“ (Get-Methode)?

const express = require('express');
const app = express();

// Middleware function 1
app.use((req, res, next) => {
  console.log('Middleware 1');
  next(); // Move to the next middleware
});

// Middleware function 2
app.use((req, res, next) => {
  console.log('Middleware 2');
  next(); // Move to the next middleware
});


// Route handler
app.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

P粉076987386P粉076987386262 Tage vor514

Antworte allen(1)Ich werde antworten

  • P粉327903045

    P粉3279030452024-04-05 16:56:37

    这是错误的。下一个中间件并不总是意味着“路由器处理程序”。 Next() 函数重定向到另一个函数。

    例如下面的例子,

    // Middleware function 1
    app.use((req, res, next) => {
      console.log("Middleware 1");
      next(); // Move to the next middleware
    });
    
    // Route handler
    app.get("/", (req, res, next) => {
      console.log("GET /");
      next();
    });
    
    // Middleware function 2
    app.use((req, res) => {
      console.log("Middleware 2");
      res.send("Hello, world!");
    });

    控制台输出:

    浏览器中的响应为 Hello, world!。因此,next() 函数并不总是意味着路由器处理程序。

    Antwort
    0
  • StornierenAntwort