浏览器请求一次之后,服务器却返回两次及两次以上的响应。我出现这个的原因是因为app.use里面 next()调用了两次。
var path = require('path');
module.exports = ['/user', function(req, res, next) {
// console.log(123);
res.sendFile(path.join(__dirname, '../../user/index.html'));
next()
}];
入口文件
const express = require('express')
const app = express()
const jwt = require('jsonwebtoken')
// 用于获取post请求参数
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
extended: false
}))
/** 1、访问静态资源需要完整路径,2、访问资源需要省略static
* 1、app.use('/static', express.static('static'));
* 2、app.use(express.static('static'));
*/
app.use('/static', express.static('static'));
/**
* 前端 打包后的文件资源
*/
app.use(express.static('user'));
app.use(express.static('frontEnd'));
app.use(express.static('backstage'));
app.use(...require('../build/userPage'));
// app.use(express.static('backstage'));
// app.use(express.static('backstage'));
const cros = require('cors')
app.use(cros())
app.use(bodyParser.json())
//设置跨域访问
// app.all('*', function(req, res, next) {
// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
// res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,token, Authorization");
// next();
// });
// 路由拦截
app.use(function (req, res, next) {
// console.log(req.originalUrl);
// 不需要携带token的路由
let whiteList = ['/admin/login', '/idx', '/user', '/front']
if (whiteList.includes(req.originalUrl)) {
next()
} else {
if (req.headers.hasOwnProperty('token')) {
jwt.verify(req.headers.token, 'lfgg_yyds', function (err, decoded) {
// 令牌验证出现异常 则返回异常类型
if (err) {
if (err.name === 'TokenExpiredError') {
res.json({
code: 50011,
message: 'token过期'
});
} else {
res.json({
code: 50012,
message: '无效token'
});
}
} else {
// 通过令牌 解析令牌信息获取用户信息
req.userInfo = decoded
next();
}
});
}
}
});
module.exports = app
出错原因
解决办法,删除‘/user’路由下的next()
var path = require('path');
module.exports = ['/user', function(req, res, next) {
res.sendFile(path.join(__dirname, '../../user/index.html'));
}];
保存就可以啦