From 29c8b0be4dfddff42b133ea91300a769aca8a9a2 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sat, 4 Jul 2026 11:22:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(lpt-ai)=EF=BC=9A=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E6=9C=AA=E5=8A=A0=E8=BD=BD=20.env=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=20LLM=5FAPI=5FKEY=20=E5=A7=8B=E7=BB=88?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:项目未依赖 dotenv,启动脚本也未使用 --env-file, process.env 中没有 LLM_API_KEY,isAvailable() 始终返回 false, /health 端点返回 llmAvailable: false。 修复: - index.ts 启动时手动读取 .env 并注入 process.env (零依赖,兼容 tsx watch dev 和 node dist 两种启动方式) - start 脚本保留 node --env-file=.env 双保险 - .gitignore 加入 .idea/ --- .gitignore | 1 + package.json | 2 +- src/index.ts | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d8421de..893cde7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ dist/ !.env.example *.log .DS_Store +.idea/ diff --git a/package.json b/package.json index a3698f3..86c686a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "dev": "tsx watch src/index.ts", "build": "tsc", - "start": "node dist/index.js", + "start": "node --env-file=.env dist/index.js", "test": "vitest run", "typecheck": "tsc --noEmit" }, diff --git a/src/index.ts b/src/index.ts index ca6093f..938aa64 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,26 @@ +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, resolve } from "node:path"; import Fastify from "fastify"; import { aiRoutes } from "./routes/ai.js"; +// ===== 加载 .env(零依赖,兼容 dev/start 两种启动方式)===== +const __dirname = dirname(fileURLToPath(import.meta.url)); +const envPath = resolve(__dirname, "..", ".env"); +try { + for (const line of readFileSync(envPath, "utf-8").split(/\r?\n/)) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith("#")) continue; + const eq = trimmed.indexOf("="); + if (eq === -1) continue; + const k = trimmed.slice(0, eq).trim(); + const v = trimmed.slice(eq + 1).trim(); + if (k && !(k in process.env)) process.env[k] = v; + } +} catch { + // .env not found, use system environment +} + const app = Fastify({ logger: { level: "info",