Closed Jokeway closed 6 years ago
应该是nuxt把所有的路由都拦截了,以至于thinkjs自己的路由没有生效
@Jokeway 把中间件放在最后面就行了
不需要调整顺序,如果放置在最后面,会影响 nuxt 的路由。 在实际项目中使用,可以对 middleware 做如下调整:
module.exports = options => {
let err = null
const middleware = async (ctx, next) => {
// 在这里处理你要访问的多模块或者 controller,使其不受 nuxt 拦截。
let subdomain = ctx.url.split('/')[1]
if (subdomain === 'api') {
return next()
} else {
// let isApi
// 默认访问状态为 404
ctx.status = 200
ctx.req.session = await ctx.session()
await nuxt.render(ctx.req, ctx.res)
const startTime = Date.now();
return next().catch(e => {
err = e
}).then(() => {
const endTime = Date.now();
// nuxt.render(ctx.req, ctx.res)
if (err) return Promise.reject(err); // 如果后续执行逻辑有错误,则将错误返回
return new Promise((resolve, reject) => {
// console.log(`request exec time: ${endTime - startTime}ms`);
})
}
)
}
}
return middleware
}
访问:http://localhost:8360/ 出现nuxt页面,OK 但是访问Thinkjs路径:http://localhost:8360/index 出现Nuxt给出的404页面