-
Notifications
You must be signed in to change notification settings - Fork 414
Open
Description
问题描述
服务器 pnpm dev 或 node dist/main.js 无法正常启动,具体表现为:
tsx src/main.ts启动后卡住:输出news-collector-store加载成功,equity: failed to fetch from sec警告后,进程挂起不退出也不继续,端口 6901/3002 始终未监听node dist/main.js启动直接报错:ESM 模块解析失败
Bug 1:PYTDX_PY 路径不存在(阻断性)
文件: src/domain/market-data/equity/symbol-index.ts 第 23 行
const PYTDX_PY = '/Users/zxjack/tools/pytdx3/.venv/bin/python' // ❌ 不存在正确路径应为: /opt/homebrew/bin/python3(或系统中实际可用的 Python 3)
影响: fetchAShareSymbols() 调用 execFileAsync(PYTDX_PY, [BRIDGE], ...) 时 Python 可执行文件找不到,导致:
- A 股 symbol 无法从本地 pytdx bridge 加载
fetchFromApi所有数据源失败allEntries.length === 0触发throw new Error('All sources returned empty')symbolIndex.load()抛出异常,startup crash
验证:
ls /Users/zxjack/tools/pytdx3/.venv/bin/python # 不存在
python3 /Users/zxjack/.openclaw/workspace/scripts/pytdx3_bridge.py # ✅ 可以运行修复建议:
// 改为系统 Python
const PYTDX_PY = '/opt/homebrew/bin/python3'
// 或使用 which 动态查找
import { execSync } from 'child_process'
const PYTDX_PY = execSync('which python3').toString().trim()Bug 2:ibkr 包 ESM 目录导入问题(阻断性)
文件: packages/ibkr/src/index.ts 第 36 行
export { Decoder } from './decoder' // ❌ 目录导入,Node.js ESM 无法解析问题根因:
- TypeScript
tsc编译后,dist/decoder/生成的是目录(内有index.js文件) - Node.js ESM 规范下,
from './decoder'不能自动解析为from './decoder/index.js' - 错误:
Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '.../decoder' is not supported
同样问题存在于 decoder/index.ts 内部所有导入(base、market-data、orders 等)也都没有 .js 扩展名。
影响: pnpm build:backend 生成的 dist/main.js 无法作为 ESM 模块加载,node dist/main.js 直接报错退出。
修复建议:
方案 A — 修源码,给所有 ESM 导入加上 .js 后缀:
// packages/ibkr/src/index.ts
export { Decoder } from './decoder/index.js' // ✅
// packages/ibkr/src/decoder/index.ts
import { Decoder } from './base.js' // ✅ 所有文件加 .js方案 B — 修改 packages/ibkr/tsconfig.json 的 moduleResolution:
"moduleResolution": "node16" // 或 "nodenext"环境信息
- Node.js: v25.8.0
- Python: 3.14.3(homebrew)
- pnpm: 10.x
- 平台: macOS arm64
- pytdx3 bridge:
/Users/zxjack/.openclaw/workspace/scripts/pytdx3_bridge.py(正常运行)
重现步骤
cd /Users/zxjack/tools/OpenAlice
pnpm dev
# 观察:tsx src/main.ts 启动后卡住,端口 6901/3002 始终未监听或
cd /Users/zxjack/tools/OpenAlice
pnpm build
node dist/main.js
# 报错:ERR_UNSUPPORTED_DIR_IMPORT优先级建议
| Bug | 优先级 | 说明 |
|---|---|---|
| PYTDX_PY 路径 | P0 | startup 直接 crash |
| ibkr ESM 导入 | P0 | 无法运行 production build |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels