/** * Monorepo 路径修复 * * Cool Admin 的 LocationUtil.getRunPath() 通过 Error stack trace 中的 * node_modules 位置反推项目根目录。在 pnpm monorepo 中,node_modules * 被提升到根目录,导致解析到 Neta-monorepo/dist 而非 * Neta-monorepo/packages/backend/dist(或src),使得模块配置无法加载。 * * 本脚本通过 --require 或 NODE_OPTIONS 在所有模块加载前修补 getRunPath。 */ const path = require('path'); // 在开发模式(ts-node)下,模块从 src 目录加载 // 在生产模式下,模块从 dist 目录加载 const isDev = process.env.NODE_ENV === 'local' || process.env.NODE_ENV === 'development'; const backendRoot = isDev ? path.resolve(__dirname, 'src') : path.resolve(__dirname, 'dist'); // 直接加载并修补 LocationUtil 单例 try { const locationModule = require('@cool-midway/core/dist/util/location'); if (locationModule && locationModule.default) { locationModule.default.getRunPath = () => backendRoot; locationModule.default.distPath = backendRoot; console.log('[monorepo-fix] Cool Admin getRunPath 已修补为:', backendRoot); } } catch (e) { console.warn('[monorepo-fix] 修补失败:', e.message); }