Я проверил другие сообщения, связанные с этой темой, и не смог найти проблему в своем коде.
const myMiddleware = (fn) => {
return (req, res, next) => {
var fullUrl = req.protocol + '://' + req.get('host') + req.url;
console.log(fullUrl)
next()
}
}
const app = express()
app.use('/dist', express.static(__dirname + '/client/dist'))
app.use('/static', express.static(__dirname + '/client/static'))
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cookieParserMiddleware())
app.use(passport.initialize())
const server = https.createServer(options, app)
app.get('/', myMiddleware((req, res) => {
res.sendFile(__dirname + '/client/dist/index.html')
}))
app.all('*', (req, res) => {
res.redirect('/')
})
server.listen(8080, function listening() {
console.log('Listening on %d', server.address().port)
})
Без пути myMiddleware
на '/'
все работает как положено.Если myMiddleware
присоединено как app.get('/', myMiddleware((req, res) => {
, то myMiddleware
вызывается несколько раз, а res.sendFile(__dirname + '/client/dist/index.html')
не вызывается.
РЕДАКТИРОВАТЬ: приведенная ниже ошибка исправлена в решении jfriend00.Промежуточное программное обеспечение, вызываемое несколько раз, все еще существует.Причиной является favicon, а некоторые другие активы не захватываются линией app.use('/static', express.static(__dirname + '/client/static'))
.Исправление пути решило и первую ошибку
Помимо этой проблемы, я попытался удалить часть ниже, но тогда приложение не работает вообще.Я предполагаю, что здесь есть 2 ошибки.
app.all('*', (req, res) => {
res.redirect('/')
})
Я разместил изображение о том, как это выглядит при удалении app.all('*'..)