var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var indexRouter = require('./routes/index'); require('./db/mysql') var app = express(); // 配置跨域中间件 app.use((req, res, next) => { // 允许所有来源访问,生产环境应谨慎设置,可替换为具体域名 res.setHeader('Access-Control-Allow-Origin', '*'); // 允许的请求方法 res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 允许的请求头 res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 处理 OPTIONS 预检请求,直接返回 204 状态码 if (req.method === 'OPTIONS') { res.sendStatus(204); } else { next(); } }); // view engine setup // app.set('views', path.join(__dirname, 'views')); // app.set('view engine', 'jade'); app.use(logger('dev'));//日志 app.use(express.json());//json格式传输 app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); // app.use(express.static(path.join(__dirname, 'public'))); app.use('/data', indexRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;