SocketDev / SocketDev/socket-cli
socket npm run build crashes with ERR_MISSING_OPTION: --permission on Node v24 + Next.js
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 317
- Forks
- 65
- Ø Merge
- 1 Std. 26 Min.
- Gemergte PRs (30 T.)
- 30
Beschreibung
Description
socket npm run build crashes during Next.js's TypeScript checking phase on Node v24. Running npm run build directly works fine.
Root cause
In shadow-npm-bin2.js:67, the --node-options value is wrapped in literal single quotes:
`--node-options='${...}${utils.cmdFlagsToString(permArgs)}'`
Since this argument is passed via child_process.spawn() (no shell), the quotes are not interpreted — npm receives them as part of the value and sets:
NODE_OPTIONS='--permission --allow-child-process --allow-fs-read=* --allow-fs-write=...'
Node.js silently ignores the garbled tokens. However, Next.js re-parses NODE_OPTIONS for its build workers using a tokenizer that splits on whitespace and only handles " as string delimiters, not '. This causes:
'--permission(leading') → unrecognized, dropped--allow-child-process,--allow-fs-read=*,--allow-fs-write=...→ valid, kept
The TypeScript worker then receives --allow-* flags without --permission, and Node v24 throws ERR_MISSING_OPTION.
Suggested fix
Remove the single quotes — they are unnecessary and harmful when arguments are passed via spawn():
- `--node-options='${nodeOptionsArg ? nodeOptionsArg.slice(15) : ''}${utils.cmdFlagsToString(permArgs)}'`
+ `--node-options=${nodeOptionsArg ? nodeOptionsArg.slice(15) : ''}${utils.cmdFlagsToString(permArgs)}`
Repro
- Node v24.11.1, Next.js 16.2.1, Socket CLI 1.1.78 (also 1.1.76)
npm run build→ succeedssocket npm run build→ crashes at "Running TypeScript ..."
TypeError [ERR_MISSING_OPTION]: --permission is required
at node:internal/process/pre_execution:656:15
at Array.forEach (<anonymous>)
at initializePermission (node:internal/process/pre_execution:653:5)
Related
- #1036 — a separate bug on the same line where user-set
NODE_OPTIONSare replaced rather than merged
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Untersuche shadow-npm-bin2.js um Zeile 67 herum und reproduziere den Fehler mit Node v24, indem du socket npm run build mit npm run build vergleichst. Entferne die wörtlichen einfachen Anführungszeichen aus dem Wert von --node-options des gestarteten Prozesses und überprüfe anschließend, dass die TypeScript-Prüfungsphase von Next.js ohne ERR_MISSING_OPTION abgeschlossen wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- next.js, node.js, typescript
- Bereich
- build-system, cli
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 78/100