Qwen2API-A / src /server.js
github-actions[bot]
Sync from GitHub Viciy2023/Qwen2API-A@b372de2fdb435c7fa78fc69c146257a58c842fba
4289eb1
const express = require('express')
const bodyParser = require('body-parser')
const config = require('./config/index.js')
const cors = require('cors')
const { logger } = require('./utils/logger')
const { initSsxmodManager } = require('./utils/ssxmod-manager')
const app = express()
const path = require('path')
const fs = require('fs')
const paths = require('./utils/paths')
const modelsRouter = require('./routes/models.js')
const chatRouter = require('./routes/chat.js')
const cliChatRouter = require('./routes/cli.chat.js')
const verifyRouter = require('./routes/verify.js')
const accountsRouter = require('./routes/accounts.js')
const settingsRouter = require('./routes/settings.js')
const usageRouter = require('./routes/usage.js')
if (config.dataSaveMode === 'file') {
if (!fs.existsSync(paths.dataFilePath)) {
fs.mkdirSync(paths.dataDir, { recursive: true })
fs.writeFileSync(paths.dataFilePath, JSON.stringify({"accounts": [] }, null, 2))
}
}
// 初始化 SSXMOD Cookie 管理器
initSsxmodManager()
app.use(bodyParser.json({ limit: '128mb' }))
app.use(bodyParser.urlencoded({ limit: '128mb', extended: true }))
app.use(cors())
// API路由
app.use(modelsRouter)
app.use(chatRouter)
app.use(cliChatRouter)
app.use(verifyRouter)
app.use('/api', accountsRouter)
app.use('/api', settingsRouter)
app.use('/api', usageRouter)
app.use(express.static(path.join(__dirname, '../public/dist')))
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, '../public/dist/index.html'), (err) => {
if (err) {
logger.error('管理页面加载失败', 'SERVER', '', err)
res.status(500).send('服务器内部错误')
}
})
})
// 处理错误中间件(必须放在所有路由之后)
app.use((err, req, res, next) => {
logger.error('服务器内部错误', 'SERVER', '', err)
res.status(500).send('服务器内部错误')
})
// 服务器启动信息
const serverInfo = {
address: config.listenAddress || 'localhost',
port: config.listenPort,
outThink: config.outThink ? '开启' : '关闭',
searchInfoMode: config.searchInfoMode === 'table' ? '表格' : '文本',
dataSaveMode: config.dataSaveMode,
logLevel: config.logLevel,
enableFileLog: config.enableFileLog
}
if (config.listenAddress) {
app.listen(config.listenPort, config.listenAddress, () => {
logger.server('服务器启动成功', 'SERVER', serverInfo)
logger.info('开源地址: https://github.com/Rfym21/Qwen2API', 'INFO')
logger.info('电报群聊: https://t.me/nodejs_project', 'INFO')
})
} else {
app.listen(config.listenPort, () => {
logger.server('服务器启动成功', 'SERVER', serverInfo)
logger.info('开源地址: https://github.com/Rfym21/Qwen2API', 'INFO')
logger.info('电报群聊: https://t.me/nodejs_project', 'INFO')
})
}