gpt4 book ai didi

javascript - 如何在 SPA 中使用 nodejs 应用程序和中间件重定向到主页?

转载 作者:行者123 更新时间:2023-11-30 20:51:56 25 4
gpt4 key购买 nike

我正在使用 expresshandlebars 作为 View 引擎构建一个调查应用程序。我使用 partials 方法为 Logo 创建了一个 html 模板,它重定向到主页 ('/')

在我的 src 文件夹中,我创建了一个 index.js 文件,其中包含每个路由的一些功能,我正在使用 page 模块以便从每个路由获取html标签。

当我在调查路线 localhost.../survey 中时, Logo 不会重定向到主页,它会显示主 url,但不会加载页面 View 。

首先,我解决了调用 next() 函数的问题。但是,由于我需要使用中间件在 ctx 参数中加载用户数据,所以现在 next() 函数对此没有帮助。

我正在使用这段代码:

// config routes
page('/', loadMember, (ctx, next) => {
next()
})

function loadMember (ctx, next) {
if (ctx.auth) {
next()
} else {
axios
.get('/test.json')
.then((res) => {
let response = res.data
if (response.email) {
ctx.auth = response
} else {
ctx.auth = false
}

next()
})
.catch((err) => {
console.log(err)
})
}
}

我尝试以不同的方式更改 next() 函数,但是我没有获得成功的重定向。

如果我删除 loadMember 中间件,例如:

page('/', (ctx, next) => {
next()
})

...重定向效果很好。问题肯定出在中间件中。我是否遗漏了中间件中的某些内容,next() 函数是否调用正常?

最佳答案

loadMember 函数中的

next() 没有在正确的位置缩进以便调用代码中的下一步。

更改顺序:

function loadMember (ctx, next) {
if (ctx.auth) {
next()
} else {
axios
.get('/test.json')
.then((res) => {
let response = res.data
if (response.email) {
ctx.auth = response
} else {
ctx.auth = false
}
})
.catch((err) => {
console.log(err)
})

next() // HERE
}
}

关于javascript - 如何在 SPA 中使用 nodejs 应用程序和中间件重定向到主页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com