mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
## The Problem
The `collect-i18n-node-defs.ts` script started failing ~3 weeks ago when
Vue nodes were introduced ([commit
006e6bd57](https://github.com/Comfy-Org/ComfyUI_frontend/commit/006e6bd57),
[PR #4263](https://github.com/Comfy-Org/ComfyUI_frontend/pull/4263)).
The issue stems from:
1. **Import chain bringing Vue components into Node.js context:**
```
collect-i18n-node-defs.ts
↓ imports
ComfyNodeDefImpl (from nodeDefStore.ts)
↓ imports
useSubgraphStore (from subgraphStore.ts)
↓ transitively imports
executionStore.ts
↓ imports
ChatHistoryWidget.vue (Vue component!)
```
2. **TypeScript `declare` fields causing Babel errors:**
```
TypeScript 'declare' fields must first be transformed by
@babel/plugin-transform-typescript
```
## This Solution vs PR #5515
### PR #5515 Approach (Complex)
- Adds custom Babel plugins and configurations
- Implements automatic browser globals injection
- Requires **47,517 additions, 9,469 deletions**
- Modifies the entire Playwright babel transformation pipeline
### This PR's Approach (Simple)
- Uses dynamic imports to defer module loading until runtime
- Avoids Babel compilation of problematic TypeScript/Vue files
- **Only 40 lines changed** in a single file
- No configuration changes needed
## How This Fix Works
```typescript
// Instead of static import that Babel tries to compile:
// import { ComfyNodeDefImpl } from '../src/stores/nodeDefStore'
// We use:
// 1. Type-only import (erased at runtime)
import type { ComfyNodeDefImpl } from '../src/stores/nodeDefStore'
// 2. Dynamic import at runtime (bypasses Babel)
const { ComfyNodeDefImpl: ComfyNodeDefImplClass } = await import(
'../src/stores/nodeDefStore'
)
```
---------
Co-authored-by: github-actions <github-actions@github.com>