我的 app.get('*') 沒有運行,我不知道為什么。我也嘗試過使用“/”作為路線,但我無法回傳任何東西。我已經發布了下面的代碼。
const express = require('express');
const morgan = require('morgan');
const shoeRouter = require('./routes/shoeRouter');
const app = express();
// MIDDLEWARE
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}
app.use(express.json());
// ROUTES
app.use('/api/shoes', shoeRouter);
app.use((err, res) => {
return res.json({ errorMessage: err.message });
});
const path = require('path');
app.use(express.static(path.join(__dirname, '/../client/build')));
app.get('*', (req, res) => {
res.send('Hello World');
});
module.exports = app;
uj5u.com熱心網友回復:
問題可能是您的全域錯誤處理程式。您已經注冊了一個帶有兩個引數的中間件函式,Express 將其視為常規(req, res) => void中間件。它不對引數名稱進行任何檢查。
要注冊一個全域錯誤處理中間件,你需要一個至少有 4 個引數的函式
app.use((err, req, res, next) => {
return res.json({ errorMessage: err.message });
});
請參閱撰寫錯誤處理程式
以與其他中間件函式相同的方式定義錯誤處理中間件函式,除了錯誤處理函式有四個引數而不是三個: (
err,req,res,next)
uj5u.com熱心網友回復:
我想,你應該把app.get('*')之前app.use('/api/...')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449375.html
