130 lines
3.3 KiB
JavaScript
130 lines
3.3 KiB
JavaScript
/**
|
||
* Framework 配置文件
|
||
* 基于 node-core-framework 的配置
|
||
*/
|
||
|
||
const path = require("path");
|
||
const baseConfig = require("./config.js");
|
||
const customSchemas = require("./custom.schemas.js");
|
||
|
||
module.exports = {
|
||
// ===== 必需配置 =====
|
||
env: process.env.NODE_ENV || 'development',
|
||
"project_key": "fullstack_template",
|
||
// 数据库配置(必需)
|
||
db: {
|
||
username: baseConfig.db.username,
|
||
password: baseConfig.db.password,
|
||
database: baseConfig.db.database,
|
||
host: baseConfig.db.host,
|
||
port: baseConfig.db.port || 3306,
|
||
dialect: baseConfig.db.dialect || 'mysql',
|
||
timezone: '+08:00',
|
||
// 远程 MySQL 常见:wait_timeout / 网络设备掐断空闲连接 → 池中连接已死仍被复用 → SequelizeConnectionError
|
||
dialectOptions: {
|
||
connectTimeout: 60000,
|
||
// mysql2@2+ 有效;旧版会忽略未知项
|
||
enableKeepAlive: true,
|
||
keepAliveInitialDelay: 10000,
|
||
},
|
||
pool: {
|
||
max: 50,
|
||
// min>0 会长期占着连接,服务端先断开后易 “Connection lost”;开发/低频接口建议 0
|
||
min: 0,
|
||
acquire: 60000,
|
||
// 空闲超过 idle(ms) 释放回池,应小于 MySQL wait_timeout(常见 600~28800s)
|
||
idle: 10000,
|
||
// 定期清理池中空闲连接,降低复用到已被服务端关闭的 TCP
|
||
evict: 15000,
|
||
},
|
||
slowSQLThreshold: 1000,
|
||
logging: (() => {
|
||
// 启用SQL监控
|
||
|
||
return (sql, timing) => {
|
||
// 调用监控函数
|
||
|
||
// 开发环境仍然输出日志
|
||
if (process.env.NODE_ENV === 'development') {
|
||
console.log(`[SQL] ${timing}ms - ${typeof sql === 'string' ? sql : (sql.sql || JSON.stringify(sql))}`);
|
||
}
|
||
};
|
||
})()
|
||
},
|
||
|
||
// API 路径配置(必需):模板仅保留管理端业务控制器目录
|
||
apiPaths: [
|
||
{
|
||
path: "./api/controller_admin",
|
||
prefix: "/admin_api",
|
||
authType: "admin",
|
||
},
|
||
],
|
||
|
||
"fileConifg": {
|
||
"vue": {
|
||
"api": "../../admin/src/api/",
|
||
"view": "../../admin/src/view/"
|
||
},
|
||
"node": {
|
||
"controller": "../controller_admin/",
|
||
"model": "../model/"
|
||
}
|
||
},
|
||
|
||
// API文档配置
|
||
swagger: {
|
||
title: "Fullstack Template API",
|
||
version: "1.0.0",
|
||
description: "admin-framework + node-core-framework 模板项目 API",
|
||
contact: {
|
||
name: '开发团队',
|
||
email: 'dev@example.com'
|
||
}
|
||
},
|
||
|
||
// ===== 建议配置 =====
|
||
|
||
// 基础 URL(根据环境区分)
|
||
baseUrl: (() => {
|
||
const env = process.env.NODE_ENV || 'production';
|
||
|
||
|
||
|
||
switch (env) {
|
||
case "production":
|
||
return "http://localhost:9098";
|
||
case "development":
|
||
default:
|
||
return "http://localhost:9098";
|
||
}
|
||
})(),
|
||
|
||
// 日志路径
|
||
logPath: './logs',
|
||
|
||
// 白名单 URL(不需要认证的接口)
|
||
allowUrls: baseConfig.allowUrls,
|
||
|
||
// 授权文件路径(可选,如果不需要授权验证可以设置为 null)
|
||
// node-core-framework 读取顶层字段 licensePath
|
||
licensePath: path.join(__dirname, "..", "_license", "license.lic"),
|
||
|
||
|
||
// Redis 配置
|
||
redis: baseConfig.redis || null,
|
||
|
||
// 模型路径
|
||
modelPaths: './api/model',
|
||
|
||
// ===== 业务配置(从原 config.js 继承)=====
|
||
|
||
// 端口配置
|
||
port: baseConfig.port,
|
||
|
||
|
||
// 自定义 Swagger Schemas
|
||
customSchemas: customSchemas
|
||
};
|
||
|