var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); const cors = require("cors"); const Joic = require("joi"); // const bodyParser = require('body-parser') // var app = express(); //解决跨域问题 app.use(cors()); app.use(logger('dev')); app.use(express.json()); // app.use(bodyParser.json());// 用于解析 application/json 类型的请求体÷ //配置解析表单数据的中间件,只能解析application/x-www-form-urlencoded格式的表单数据 app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); //在路由之前封装返回报错函数 app.use((req, res, next) => { res.rescc = function (message, status = 500, data) { res.send({ status, message: message instanceof Error ? message.message : message, data }) } next(); }) //在路由之前解析token中间件 // const expressJWT = require("express-jwt"); // const config = require('./config.js'); // app.use(expressJWT({ // secret: config.jwtSecretKey // }).unless({ // path: [/^\/api/] // })) //导入使用router模块 //用户注册登录 // const userRounter = require('./routes/user/user.js'); // app.use('/api/user', userRounter); //用户信息 // const userinfoRounter = require('./routes/user/userInfo.js'); // app.use('/my', userinfoRounter); //天气 const weatherInchinaRounter = require('./routes/weather/inchina.js'); app.use('/weather/inchina', weatherInchinaRounter); //获取所有气象层级 const weatherLevel = require('./routes/weather/level.js'); app.use('/weather', weatherLevel); //获取所有气象变量 const weatherVariables = require('./routes/weather/variables.js'); app.use('/weather', weatherVariables); // 别问,问就是测试用的 const test = require('./routes/grib2/test.js'); app.use('/api', test); // 获取全球指定层级与变量 const getAreaWeatherData = require('./routes/grib2/getAreaWeatherData.js'); app.use('/weather', getAreaWeatherData); const getWeatherWindData = require('./routes/grib2/getWeatherWindData.js'); app.use('/weather', getWeatherWindData); const tempapiRounter = require('./routes/weather/temperature.js'); app.use('/weather/tempapi', tempapiRounter); const mapTiles = require('./routes/tiles/map.js'); app.use('/tiles', mapTiles); const cloudTiles = require('./routes/tiles/cloud.js'); app.use('/tiles', cloudTiles); //疫苗接种 // const vaccinesRounter = require('./routes/vaccines/vaccine.js'); // app.use('/my/vaccines', vaccinesRounter); //接入deepseek // const openaiRounter = require('./routes/openai/openai.js'); // app.use('/api/deepseek', openaiRounter); // const openaiListRounter = require('./routes/openai/openaiList.js'); // app.use('/my/aitalk', openaiListRounter); //定义错误级别的中间件 app.use((err, req, res, next) => { //验证失败导致的错误 if (err instanceof Joic.ValidationError) return res.rescc(err); //token验证失败的错误 if (err.name === 'UnauthorizedError') return res.rescc("身份验证失败!"); res.rescc(err); }) module.exports = app;