Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

workflow:validate crashes with "Cannot read properties of undefined (reading 'const')" when the published schema has a job entry without properties.type

Aperta Adatta ai principianti
#4,482 3 commenti 3 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

@douglowder ci sta già lavorando.

Dal 30/9/2026.

  • #4505 di @douglowder — chiusa senza merge

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
cli

Direzione di ricerca

Inizia da build/commandUtils/workflow/validation.js, in jobTypesFromWorkflowSchema e nella sua chiamata da validateWorkflowJobTypes. Riproduci il problema con eas workflow:validate .eas/workflows/build-preview.yml --non-interactive oppure usa EXPO_TESTING_WORKFLOW_SCHEMA_PATH con lo schema che contiene la voce di job catch-all. Il lavoro è completato quando il validatore non genera più un’eccezione e valida correttamente il workflow invariato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

issue accepted

Summary

eas workflow:validate fails for every workflow file with:

- Validating the workflow YAML file…
✖ Workflow configuration YAML is not valid.
Error: Cannot read properties of undefined (reading 'const')

The failure happens before any workflow is validated, so it is not caused by the workflow content. It reproduces on a workflow that a previous CLI release reported as valid.

Cause

eas workflow:validate fetches the published workflow schema from GET /v2/workflows/schema and then builds its job-type allowlist in build/commandUtils/workflow/validation.js:

function jobTypesFromWorkflowSchema(workflowJsonSchema) {
  return workflowJsonSchema?.properties?.jobs?.additionalProperties?.anyOf.map(
    (props) => props.properties.type.const,
  );
}

validateWorkflowJobTypes calls this before validateWorkflowStructure, so a TypeError here aborts validation entirely.

The published schema now also contains a catch-all job entry that has no properties.type (its shape is name/if/… plus additionalProperties, used for job types outside the named set). Reading props.properties.type.const on that entry throws the observed TypeError.

Entries 0-17 of anyOf all carry properties.type.const (build, custom, deploy, fingerprint, get-build, maestro-cloud, maestro, require-approval, apple-device-registration-request, submit, testflight, update, slack, doc, repack, github-comment, branch-delete, update-rollout); the additional entry does not.

Reproduction

Any project with a workflow file:

eas workflow:validate .eas/workflows/build-preview.yml --non-interactive

Checked versions: 22.6.0, 23.0.0, 24.0.0, 24.4.0, 24.8.0 (latest) — all contain the same expression and all fail.

Workaround

Point the validator at a copy of the schema without the catch-all entry, using the existing hook in fetchWorkflowSchemaAsync:

EXPO_TESTING_WORKFLOW_SCHEMA_PATH=/path/to/schema-without-catch-all.json \
  eas workflow:validate .eas/workflows/build-preview.yml --non-interactive

With that entry removed the same CLI reports the unmodified workflow as valid, so the workflow content itself is fine.

Suggested fix

Collect job types defensively, ignoring entries that do not declare one:

return (workflowJsonSchema?.properties?.jobs?.additionalProperties?.anyOf ?? [])
  .map((props) => props?.properties?.type?.const)
  .filter((type) => typeof type === 'string');

Ideally the catch-all entry would also be distinguishable without relying on its position in anyOf.

Lingua principale
TypeScript
Stelle
1.4k
Fork
254
Merge medio
4g 41m
PR unite (30g)
113

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di expo/eas-cli

Tutte le issue di expo/eas-cli

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.