Я пытаюсь добавить пользовательское промежуточное ПО на пользовательский сервер next.js .Но нет никаких конкретных шаблонов пути, к которым я мог бы привязать свое промежуточное программное обеспечение, так как эти URL генерируются нашей CMS и могут быть в значительной степени чем угодно, а все .Поэтому я хотел бы добавить свое промежуточное ПО последним в цепочке так сказать.В качестве окончательного всеобъемлющего.Но я не могу найти никакой документации о том, как этого добиться.
Я пытался просто поставить свое промежуточное ПО последним, но это привело к тому, что его никогда не вызывали.
Работает, но уродливо, ине в будущем:
//Our custom middleware first
server.get('*', [customMiddleware, standardMiddleware])
...
const customMiddleware = async function (req, res, next) {
const parsedUrl = parse(req.url, true)
const { pathname, query } = parsedUrl
console.log("Custom middleware. pathname: " + pathname)
if (pathname.startsWith("/babel/") || pathname.startsWith("/_next/") || pathname.startsWith("/static/") ...etc) {
return next()
}
///Custom logic here...
}
const standardMiddleware = function (req, res, next) {
const parsedUrl = parse(req.url, true)
const { pathname, query } = parsedUrl
console.log("Standard middleware. pathname: " + pathname)
return handle(req, res)
}
Не работает:
//Our custom middleware last
server.get('*', [standardMiddleware, customMiddleware])
...
const standardMiddleware = function (req, res, next) {
const parsedUrl = parse(req.url, true)
const { pathname, query } = parsedUrl
console.log("Standard middleware. pathname: " + pathname)
return handle(req, res)
}
const customMiddleware = async function (req, res, next) {
const parsedUrl = parse(req.url, true)
const { pathname, query } = parsedUrl
console.log("Custom middleware. pathname: " + pathname)
///Custom logic here...
}
Когда я запускаю код, отмеченный «Не работает» Я ожидал, что next.js обработает все запросычто он может обработать, а затем вернуться к customMiddleware для всех других запросов.На самом деле происходит то, что он никогда не возвращается к customMiddleware , он просто возвращает 404 для неизвестных путей.
Обновление 2019-02-13
Поскольку это не представляется возможным в текущем коде NextJS, я добавил это как запрос функции .