修改main.go的conf路径读取
This commit is contained in:
@@ -2,6 +2,9 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||||
"github.com/JACKYMYPERSON/hldrCenter/init/database/cache"
|
"github.com/JACKYMYPERSON/hldrCenter/init/database/cache"
|
||||||
@@ -10,8 +13,41 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// 加载配置文件
|
// 目标:开发环境(go run)找项目根目录的 config,生产环境(打包后)找可执行文件同级的 config
|
||||||
cfg, err := config.LoadConfig("config/config.yaml")
|
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 {
|
if err != nil {
|
||||||
fmt.Printf("加载配置失败:%v\n", err)
|
fmt.Printf("加载配置失败:%v\n", err)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user