Parcourir la source

fix: use --base CLI flag instead of env var for Vite preview

Vite dev server didn't apply base from process.env.VITE_BASE reliably.
Using --base CLI argument is the definitive way to set the base path,
ensuring @vite/client and all injected paths use /ads-preview/ prefix.
guoziyun il y a 3 semaines
Parent
commit
95fde382e6

+ 2 - 2
platform/server/dist/services/previewService.js

@@ -53,19 +53,19 @@ async function startPreview(creativeId, theme, storageDir) {
     const configContent = (0, configGenerator_1.generateAdConfig)({ creativeId, theme, storageDir });
     const configContent = (0, configGenerator_1.generateAdConfig)({ creativeId, theme, storageDir });
     const configPath = path_1.default.join(TEMPLATE_DIR, "src", "filler", "_ad_config_.ts");
     const configPath = path_1.default.join(TEMPLATE_DIR, "src", "filler", "_ad_config_.ts");
     fs_1.default.writeFileSync(configPath, configContent, "utf-8");
     fs_1.default.writeFileSync(configPath, configContent, "utf-8");
-    // 4. 通过 VITE_BASE 环境变量传入 base 路径(vite.config.js 读取)
+    // 4. 通过 --base CLI 参数传入 base 路径,确保 Vite dev server 和 HTML 注入都使用正确前缀
     //    注意:nginx 必须配合去掉 proxy_pass 尾部斜杠,保持 /ads-preview/ 前缀不变
     //    注意:nginx 必须配合去掉 proxy_pass 尾部斜杠,保持 /ads-preview/ 前缀不变
     const previewBase = process.env.PREVIEW_BASE_PATH || "/";
     const previewBase = process.env.PREVIEW_BASE_PATH || "/";
     console.log(`[preview] Starting Vite dev server on port ${PREVIEW_PORT} (base: ${previewBase})...`);
     console.log(`[preview] Starting Vite dev server on port ${PREVIEW_PORT} (base: ${previewBase})...`);
     viteProcess = (0, child_process_1.spawn)(path_1.default.join(TEMPLATE_DIR, "node_modules", ".bin", "vite"), [
     viteProcess = (0, child_process_1.spawn)(path_1.default.join(TEMPLATE_DIR, "node_modules", ".bin", "vite"), [
         "--port", String(PREVIEW_PORT),
         "--port", String(PREVIEW_PORT),
         "--strictPort",
         "--strictPort",
+        "--base", previewBase,
     ], {
     ], {
         cwd: TEMPLATE_DIR,
         cwd: TEMPLATE_DIR,
         env: {
         env: {
             ...process.env,
             ...process.env,
             AD_CONFIG_PATH: "src/filler/_ad_config_.ts",
             AD_CONFIG_PATH: "src/filler/_ad_config_.ts",
-            VITE_BASE: previewBase,
         },
         },
         stdio: ["ignore", "pipe", "pipe"],
         stdio: ["ignore", "pipe", "pipe"],
     });
     });

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
platform/server/dist/services/previewService.js.map


+ 2 - 2
platform/server/src/services/previewService.ts

@@ -53,7 +53,7 @@ export async function startPreview(
   const configPath = path.join(TEMPLATE_DIR, "src", "filler", "_ad_config_.ts");
   const configPath = path.join(TEMPLATE_DIR, "src", "filler", "_ad_config_.ts");
   fs.writeFileSync(configPath, configContent, "utf-8");
   fs.writeFileSync(configPath, configContent, "utf-8");
 
 
-  // 4. 通过 VITE_BASE 环境变量传入 base 路径(vite.config.js 读取)
+  // 4. 通过 --base CLI 参数传入 base 路径,确保 Vite dev server 和 HTML 注入都使用正确前缀
   //    注意:nginx 必须配合去掉 proxy_pass 尾部斜杠,保持 /ads-preview/ 前缀不变
   //    注意:nginx 必须配合去掉 proxy_pass 尾部斜杠,保持 /ads-preview/ 前缀不变
   const previewBase = process.env.PREVIEW_BASE_PATH || "/";
   const previewBase = process.env.PREVIEW_BASE_PATH || "/";
 
 
@@ -61,12 +61,12 @@ export async function startPreview(
   viteProcess = spawn(path.join(TEMPLATE_DIR, "node_modules", ".bin", "vite"), [
   viteProcess = spawn(path.join(TEMPLATE_DIR, "node_modules", ".bin", "vite"), [
     "--port", String(PREVIEW_PORT),
     "--port", String(PREVIEW_PORT),
     "--strictPort",
     "--strictPort",
+    "--base", previewBase,
   ], {
   ], {
     cwd: TEMPLATE_DIR,
     cwd: TEMPLATE_DIR,
     env: {
     env: {
       ...process.env,
       ...process.env,
       AD_CONFIG_PATH: "src/filler/_ad_config_.ts",
       AD_CONFIG_PATH: "src/filler/_ad_config_.ts",
-      VITE_BASE: previewBase,
     },
     },
     stdio: ["ignore", "pipe", "pipe"],
     stdio: ["ignore", "pipe", "pipe"],
   });
   });

+ 0 - 2
templates/coloring/vite.config.js

@@ -43,8 +43,6 @@ module.exports = defineConfig(({ mode }) => {
   const outDir = output ? `dist/${output}` : "dist";
   const outDir = output ? `dist/${output}` : "dist";
 
 
   return {
   return {
-    // VITE_BASE 由 previewService 传入,用于预览服务的子路径部署
-    base: process.env.VITE_BASE || undefined,
     plugins: [viteSingleFile(), finalizeHtmlPlugin(outDir, adapter)],
     plugins: [viteSingleFile(), finalizeHtmlPlugin(outDir, adapter)],
     server: {
     server: {
       allowedHosts: ["color2.jccytech.cn", "localhost", ".jccytech.cn"],
       allowedHosts: ["color2.jccytech.cn", "localhost", ".jccytech.cn"],

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff