nf build fails with EISDIR when the assets folder has a subfolder
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
Direzione di ricerca
Inizia da src/lib/utils/files.ts, in particolare da copyFiles alle righe 9–10, e segui come viene usata da nf build, nf dev e nf build --watch. Aggiungi un test unitario per copiare una cartella di assets con una sottocartella annidata, quindi verifica che venga copiata l’intera struttura senza EISDIR.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Which package is this bug report for?
@nanoforge-dev/cli
Which command is this bug report for?
build
Issue description
nf build fails with EISDIR as soon as the assets folder has a subfolder. copyFiles lists readdirSync(from, { recursive: true }), which returns folders as well as files, and calls copyFileSync on every entry without creating the subfolders in the output (src/lib/utils/files.ts#L9-L10). nf dev and nf build --watch fail the same way. Related to #12 (the feature that added the asset copy).
Steps to reproduce (reproduced with dist/nf.js):
- A client project with
assets/a.pngandassets/sprites/b.png. nf buildError: EISDIR: illegal operation on a directory, copyfile '.../assets/sprites' -> '.../dist/sprites',Build failed!, exit code 1.dist/holds onlya.png.
Expected: the whole assets tree is copied (e.g. fs.cpSync(from, to, { recursive: true })), with a unit test on a nested assets folder.
Found during a read-only audit of main at e95b881 (2026-11-11).
Code sample
// assets/a.png
// assets/sprites/b.png
// nf build -> EISDIR: illegal operation on a directory, copyfile 'assets/sprites' -> 'dist/sprites'
Versions
- @nanoforge-dev/cli 3.0.1 (main, e95b881)
- Node.js 26.7.0
- Bun 1.3.14 (bundled)
- Linux
Issue priority
High (immediate attention needed)
I have tested this issue on a development release
e95b881
- Lingua principale
- TypeScript
- Stelle
- 2
- Fork
- 2
- Merge medio
- 2g 18h
- PR unite (30g)
- 17
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NanoForge-dev/CLI
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
NanoForge-dev/CLI#294 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NanoForge-dev/CLI#293 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
NanoForge-dev/CLI#292 ·
I maintainer di solito rispondono entro 1 giorno
-
command:dev enhancement good first issue refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NanoForge-dev/CLI#281 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 74/100
NanoForge-dev/CLI#228 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di NanoForge-dev/CLI
Issue simili
-
Mend: dependency security vulnerability
Difficoltà 1/5 1-3 ore Idoneità per principianti 65/100
fdm-monster/fdm-monster#5563 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
growilabs/growi#12246 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededForse già presa @github-actions l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SSWConsulting/SSW.Rules#2809 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno