From 243ca023103a6d22519d9ba744f143486b25fc93 Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Tue, 4 Nov 2025 17:44:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9main.go=E7=9A=84conf=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/main.go | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/server/main.go b/server/main.go index 5f255ab2..021cc464 100644 --- a/server/main.go +++ b/server/main.go @@ -2,6 +2,9 @@ package main import ( "fmt" + "os" + "path/filepath" + "strings" "github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/init/database/cache" @@ -10,8 +13,41 @@ import ( ) func main() { - // 加载配置文件 - cfg, err := config.LoadConfig("config/config.yaml") + // 目标:开发环境(go run)找项目根目录的 config,生产环境(打包后)找可执行文件同级的 config + var configPath string + + // 1. 先获取当前程序的路径(开发时是临时路径,生产时是打包后的路径) + exePath, err := os.Executable() + if err != nil { + fmt.Printf("获取程序路径失败:%v\n", err) + return + } + exeDir := filepath.Dir(exePath) + + // 2. 开发环境兼容:判断是否在 GoLand 的临时目录(或项目根目录) + // 逻辑:如果 exeDir 包含 "tmp"(临时目录特征),则去上级目录找项目根的 config + // 可根据你的项目结构调整判断逻辑(比如项目名包含 "myproject",也可以判断 strings.Contains(exeDir, "myproject")) + if strings.Contains(strings.ToLower(exeDir), "tmp") { + // 开发环境:从临时目录向上回溯,找到项目根目录(根据实际项目层级调整 ../ 的数量) + // 示例:临时目录 → 项目根目录(假设临时目录在项目根下的 tmp 子目录,需回溯1级) + projectRoot := filepath.Join(exeDir, "..") // 若回溯不够,可改成 "../..",直到找到项目根 + configPath = filepath.Join(projectRoot, "config", "config.yaml") + + // 验证:如果没找到,再尝试用当前工作目录(go run 的工作目录默认是项目根) + if _, err := os.Stat(configPath); err != nil { + configPath = filepath.Join(".", "config", "config.yaml") + } + } else { + // 生产环境(打包后):用可执行文件同级的 config 文件夹 + configPath = filepath.Join(exeDir, "config", "config.yaml") + } + + // 3. 验证路径是否存在(可选,方便调试) + if _, err := os.Stat(configPath); err != nil { + fmt.Printf("配置文件不存在:%s\n", configPath) + return + } + cfg, err := config.LoadConfig(configPath) if err != nil { fmt.Printf("加载配置失败:%v\n", err) return