[Firebase v14] App Check verifyToken crashes with ERR_REQUIRE_ESM (jwks-rsa@4 require()s ESM-only jose@6)
I maintainer di solito rispondono entro 7 giorni
@jonathanedey ci sta già lavorando.
Dal 17/6/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Summary
getAppCheck().verifyToken() throws ERR_REQUIRE_ESM in a CommonJS/serverless runtime. The transitive dep [email protected] does const jose = require('jose') but declares jose@^6.1.3, and jose@6 is ESM-only, so the require() is a hard Node error.
Error
Error [ERR_REQUIRE_ESM]: require() of ES Module
node_modules/.pnpm/[email protected]/node_modules/jose/dist/webapi/index.js
from node_modules/.pnpm/[email protected]/node_modules/jwks-rsa/src/utils.js
not supported.
Root cause (verified)
[email protected]App Check verification depends on[email protected].[email protected]declares"jose": "^6.1.3"and loads it via CommonJS insrc/utils.js:const jose = require('jose');[email protected]is ESM-only ("type": "module", norequireexport condition).- Node refuses
require()of an ESM module, so any path reaching App Check JWKS verification crashes.
[email protected] is internally inconsistent: a CommonJS require('jose') paired with a jose range whose only satisfying versions are ESM-only. firebase-admin ships this combination. It only uses jose.importJWK and jose.exportSPKI, which are API-identical across jose 4/5/6.
Why production only
Dev uses an ESM-capable loader, so the import resolves via interop. In a production CommonJS/serverless bundle (firebase-admin is externalized and loaded with require()), the require()-of-ESM hits the hard error.
Environment
- firebase-admin: 14.0.0
- jwks-rsa: 4.0.1 (transitive)
- jose resolved: 6.2.3 (ESM-only)
- Node.js 20+, CommonJS context, serverless (Vercel), Next.js 16, pnpm 11
Expected
App Check verification works in a CommonJS/serverless runtime without manual dependency overrides.
Suggested fix
Move jwks-rsa to a version that loads jose via dynamic import(), or constrain jose to a dual CJS/ESM build (^4/^5), or pin/patch jwks-rsa's jose in firebase-admin.
Workaround (consumer side)
# pnpm-workspace.yaml
overrides:
jwks-rsa>jose: "4.15.9"
- Lingua principale
- TypeScript
- Stelle
- 1.8k
- Fork
- 420
- Merge medio
- 5g 6h
- PR unite (30g)
- 11
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 firebase/firebase-admin-node
-
Password policy violation is reported as `auth/internal-error` instead of a specific error codeAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
firebase/firebase-admin-node#3265 ·
I maintainer di solito rispondono entro 7 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
firebase/firebase-admin-node#3234 ·
I maintainer di solito rispondono entro 7 giorni
-
[email protected] stable dependency tree fails npm audit via Storage uuid and Firestore google-gaxForse già presa @lahirumaramba l’ha presa 24 giorni fa. Aperta
firebase/firebase-admin-node#3221 · 3 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 7 giorni
-
api: messaging
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
firebase/firebase-admin-node#3215 ·
I maintainer di solito rispondono entro 7 giorni
-
api: messaging
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
firebase/firebase-admin-node#3214 ·
I maintainer di solito rispondono entro 7 giorni
Tutte le issue di firebase/firebase-admin-node
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
📕documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
db-ux-design-system/core-web#8343 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement triage/needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
heygen-com/hyperframes#4944 ·
I maintainer di solito rispondono entro 1 giorno
-
ai-driven-qa bug claude
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
linagora/twake-calendar-frontend#1493 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
material-extensions/vscode-material-icon-theme#3610 ·
I maintainer di solito rispondono entro 2 giorni