NuxtJS版本2.8.1
我在许多其他页面上都使用了重定向功能,该页面是一个帮助页面,用于重定向到用户的上一个工作页面。除了该错误之外,我没有得到任何其他记录的信息,尽管它确实可以正常工作-我只是不希望将来发生任何警告,因为这仅在我们的生产服务器上发生。
在浏览器中,当转到该页面将我重定向到上一个工作页面时,我在此页面上看到一个302
,该页面通过304
将我重定向到我尊敬的页面。
我在github上发现了this issue,尽管它使用了fetch()
方法。一位贡献者说,像我这样使用asyncData
,并且该问题已在2017年的最新版本Nuxtjs中得到修复,但我仍然遇到此错误。
这是我遇到的非致命错误,它仅在生产中出现。
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at setHeadersFromObject (/var/www/production/node_modules/on-headers/index.js:94:16)
at ServerResponse.setWriteHeadHeaders (/var/www/production/node_modules/on-headers/index.js:122:5)
at ServerResponse.writeHead (/var/www/production/node_modules/on-headers/index.js:30:36)
at Object.At.o [as next] (server.js:1:0)
at t.context.t.context.redirect (server.js:1:0)
at asyncData (ce3f051d30716eaa1dc4.js:1:0)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
我认为是因为NuxtJS不能正确执行301吗?
这是导致此问题的源代码:
async asyncData({ $axios, redirect}) {
var body = await $axios.$get('/user/session/all');
if(!body
|| !body.step
|| body.step == 1){
redirect('/send/photo');
}
const is_auth = await $axios.$get("https://my_api.com/Data/Utility/IsAuthenticated/");
if(!is_auth.isAuthenticated)
redirect("/send/account");
var page = "/send/photo";
switch(body.step){
case 2:
page = "/send/video";
break;
case 3:
page = "/send/message";
break;
case 4:
page = "/send/account";
break;
case 5:
page = "/send/recipient";
break;
case 6:
page = "/send/invoice";
break;
case 7:
page = "/send/invoice";
break;
case 8:
page = "/send/review";
break;
}
redirect(page);
},
那会是什么?
答案 0 :(得分:1)
在粘贴的重定向代码中,将执行两次。您不会在第一次调用重定向后停止流量。您应该在第一次重定向后添加return
if(!is_auth.isAuthenticated) {
redirect("/send/account");
return
}