快速重定向导致"Uncaught SyntaxError: Unexpected token <"



Using Node.js, Express, Socket.io, firebase admin+auth and Handlebars.

我收到错误Uncaught SyntaxError: Unexpected token <

当我使用res.redirect('/login');但当我删除时它会消失res.redirect尝试包括重定向类型 (301) 将路径更改为../login/../login但仍然有错误?

真的难倒了这个,任何帮助都会很棒!

似乎大多数关于它的其他讨论都停留在路径问题?

进口

const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
var exphbs  = require('express-handlebars');

我认为相关的代码

// Express and Handlebars
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

主要问题代码

// show login page before middleware check (works fine)
app.get('/login', (req, res) => {
res.render('login', {
showTitle: true,
title: 'Login'     
});
});
// Auth Check All Pages HERE Catches access to all other pages
// Main Issue
app.use(function(req, res, next) {  
console.log('[firebase.auth()] ', firebase.auth().currentUser);
if(firebase.auth().currentUser === null){
res.redirect('/login');
return; // same problem without return
}else{
next();
}
});
// all other routes...

express.static造成的吗?

app.use(express.static('/public'));
const port = 3000;
http.listen(port, () => console.log(`Example app listening on port ${port}!`))

登录.车把

{{#if showTitle}}
<h1>{{title}}</h1>
{{/if}}

<form id="login" >
<label for="email">Email Address</label>
<input id="email" type="email" value="ben@bnr.io"/>
<label for="pass">Password</label>
<input id="pass" type="password"/>
<button>Login</button>
</form>

该错误是由res.redirect('/login');重定向公用文件夹中的脚本引起的,因此脚本 srcjs/client.js将被重定向到/login

这是因为中间件app.use(function(req, res, next)在所有 HTTP 请求上触发。

修复将其更改为在路由上使用函数:

例:

app.get('/', isAuthenticated, (req, res) => {
res.render('home', {
showTitle: true,
title: 'Home'
});
});

功能:

function isAuthenticated(req, res, next) {
if (uid)
return next();
// IF A USER ISN'T LOGGED IN, THEN REDIRECT THEM
res.redirect('/login');
} 

相关内容

  • 没有找到相关文章

最新更新