Metro babel transformer doesn't recognize .cjs config files (babel.config.cjs, .babelrc.cjs)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, node.js, react-native
Piste de recherche
Commencez par packages/react-native-babel-transformer/src/index.js, en particulier les lignes 74-88, et suivez la recherche existante de la configuration Babel. Vérifiez le comportement pour les projets dont package.json définit type sur module, puis vérifiez que .babelrc.cjs et babel.config.cjs sont détectés et que les plugins personnalisés sont appliqués au lieu de revenir silencieusement au default preset.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
The @react-native/metro-babel-transformer doesn't recognize .cjs babel config files, which causes silent failures when projects use "type": "module" in their package.json.
Problem
In @react-native/metro-babel-transformer/src/index.js (lines 74-88), the transformer only searches for:
- .babelrc
- .babelrc.js
- babel.config.js
When a project has "type": "module" in package.json:
- .js files are treated as ES modules by Node.js
- Babel config files that use module.exports = function(api) {...} (CommonJS) must use the .cjs extension
- Metro silently falls back to the default preset, ignoring custom plugins
This causes hard-to-debug issues. In my case, the react-native-worklets/plugin wasn't being applied, resulting in runtime errors like "Failed to create a worklet" with no indication that the babel config wasn't being loaded.
Expected behavior
Metro should also search for:
- .babelrc.cjs
- babel.config.cjs
This aligns with Babel's own configuration file resolution which supports .cjs extensions.
Workaround
Use extendsBabelConfigPath in Metro config:
// metro.config.cjs
const customConfig = {
transformer: {
extendsBabelConfigPath: path.resolve(__dirname, 'babel.config.cjs'),
},
};
Environment
React Native: 0.81.5
Node.js: 24.x
pnpm monorepo with "type": "module" in package.json
- Langage dominant
- C++
- Étoiles
- 127k
- Forks
- 25.3k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de react/react-native
-
Needs: Author Feedback Needs: Repro
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
react/react-native#58659 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Needs: Author Feedback Needs: Repro
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
react/react-native#58621 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Needs: Attention Needs: Repro
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
react/react-native#58610 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Needs: Triage :mag:
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
react/react-native#58565 · 1 commentaire · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Needs: Attention Needs: Repro
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
react/react-native#58526 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de react/react-native
Issues similaires
-
HasBacktrace Priority-Critical
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
azerothcore/azerothcore-wotlk#27921 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
yhirose/cpp-peglib#344 ·
-
bug-unconfirmed
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
shadps4-emu/shadps4-qtlauncher#453 ·
Les mainteneurs répondent en général sous 2 jours