bingocode 1.1.57 → 1.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/manager/CliMenuManager.tsx +22 -19
package/package.json
CHANGED
|
@@ -17,6 +17,8 @@ import { TopToolbar } from '../manager/TopToolbar.tsx';
|
|
|
17
17
|
|
|
18
18
|
// 主题切换(Hook)
|
|
19
19
|
import { useTheme } from '../components/design-system/ThemeProvider.js';
|
|
20
|
+
import { createRequire } from 'module';
|
|
21
|
+
const require = createRequire(import.meta.url);
|
|
20
22
|
// Markdown 渲染(纯函数,不依赖 AppStateProvider context)
|
|
21
23
|
import { applyMarkdown } from '../utils/markdown.js';
|
|
22
24
|
import { Ansi } from '../ink/Ansi.js';
|
|
@@ -289,18 +291,15 @@ export const CliMenuManager: React.FC = () => {
|
|
|
289
291
|
// 动态定位 server 入口,兼容开发环境 (.ts) 和打包环境 (.js)
|
|
290
292
|
let entry = "";
|
|
291
293
|
try {
|
|
292
|
-
//
|
|
293
|
-
|
|
294
|
-
const
|
|
294
|
+
// 利用 Node.js 的模块解析机制寻找 bingocode 包的根目录
|
|
295
|
+
// 这种方法在 npm install -g 这种复杂路径下最可靠
|
|
296
|
+
const bingoPkgPath = require.resolve('bingocode/package.json');
|
|
297
|
+
const root = path.dirname(bingoPkgPath);
|
|
295
298
|
|
|
296
|
-
// 方案 2: 尝试包内的几种标准结构
|
|
297
|
-
const pkgRoot = path.resolve(__dirname, '../../'); // 从 src/manager 向上两级到根目录
|
|
298
299
|
const possiblePaths = [
|
|
299
|
-
path.join(
|
|
300
|
-
path.join(
|
|
301
|
-
path.join(
|
|
302
|
-
path.join(pkgRoot, 'dist/server.js'),
|
|
303
|
-
path.resolve(process.argv[1], '../../src/server/index.ts'), // 结构 3: 从 bin 文件位置反推
|
|
300
|
+
path.join(root, 'src/server/index.ts'),
|
|
301
|
+
path.join(root, 'src/server/index.js'),
|
|
302
|
+
path.join(root, 'dist/server.js')
|
|
304
303
|
];
|
|
305
304
|
|
|
306
305
|
for (const p of possiblePaths) {
|
|
@@ -310,18 +309,22 @@ export const CliMenuManager: React.FC = () => {
|
|
|
310
309
|
}
|
|
311
310
|
}
|
|
312
311
|
} catch (e) {
|
|
313
|
-
// Fallback:
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
312
|
+
// Fallback: 如果 require.resolve 失败(比如还没发布为包),使用现有的路径逻辑
|
|
313
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
314
|
+
const __dirname = path.dirname(__filename);
|
|
315
|
+
const pkgRoot = path.resolve(__dirname, '../../');
|
|
316
|
+
|
|
317
|
+
const fbPaths = [
|
|
318
|
+
path.join(__dirname, '../server/index.ts'),
|
|
319
|
+
path.join(pkgRoot, 'src/server/index.ts'),
|
|
320
|
+
];
|
|
321
|
+
for (const p of fbPaths) {
|
|
322
|
+
if (fs.existsSync(p)) { entry = p; break; }
|
|
323
|
+
}
|
|
319
324
|
}
|
|
320
325
|
|
|
321
326
|
if (!entry || !fs.existsSync(entry)) {
|
|
322
|
-
|
|
323
|
-
const lastTry = path.resolve(import.meta.dir || "", '../server/index.ts');
|
|
324
|
-
setBootErr(`无法定位服务器入口文件。请确保 src/server/index.ts 存在。\n尝试路径: ${entry || '未找到'}`);
|
|
327
|
+
setBootErr(`无法定位服务器入口文件。\n最后尝试路径: ${entry || '未探测到'}`);
|
|
325
328
|
return;
|
|
326
329
|
}
|
|
327
330
|
|