各位看看怎么回事,网上说这个报错是服务端发送了多次响应给客户端造成的,看了好几遍我这也没有多次响应客户端啊。
//app.js部分
const express=require("express");
const app=express();
const md5=require("md5-node")
app.all("*",function(req,res,next){ //跨域处理
console.log(88);
res.header("Access-Control-Allow-Origin","*"); //header为express规范,setHeader为node规范
res.header("Access-Control-Allow-Headers", "X-Requested-With, accept, origin, content-type");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1');
res.header('Content-Type', 'application/json;charset=utf-8');
next();
})
const sendRes=require("./api/proData/sendRes");
app.use(sendRes); //注册统一响应函数格式
const dbData=require("./db/db");
app.use(dbData); //注册数据库信息
app.get("/login",function(req,res,next){
const formTel=req.query.tel; //提交至服务器的tel
const formPassword=req.query.password; //提交至服务器的password
if(!formTel||!formPassword) return res.sendRes(null,"请传入正确的表单",204)
const sql=`select * from loginData where tel=${formTel}`;
res.dbData.query(sql,function(err,sqlData){
console.log(`loginRequest at DB || tel=${formTel}`);
if(err){ //数据库错误
return res.sendRes(null,"DB ERR!",204);
}
if(sqlData.length==0) return res.sendRes(null,"电话号码不存在,请重新输入",204);
if(sqlData.length==1){
if(formTel==sqlData.tel&&formPassword==sqlData.password) {
const date=new Date();
const token=`MARKET${md5(date)}`;
const resObj={data:null,meta:{token:token,msg:"登录成功",status:200}}
return res.json(resObj)
}else{
return res.sendRes(null,"密码有误,请重新输入",204)
}
}
})
next()
})
app.listen(3000,function(){
console.log("server start at localhost:3000");
})
//sendRes.js部分
module.exports=function(req,res,next){
res.sendRes=function(data,msg,status){
var obj={};
if(data==200){
obj={data:null,meta:{msg:"Response success",status:200}};
return res.send(obj)
}
obj={data,meta:{msg,status}};
return res.send(obj);
}
next();
}
//db.js部分
const mysql=require("mysql");
const connection=mysql.createConnection({
host:"localhost",
user:"root",
password:"root",
database:"ddd"
})
module.exports=function(req,res,next){
res.dbData=connection;
next()
};