La prise en charge de la syntaxe expérimentale "optionalChaining" n'est actuellement pas activée
J'obtenais l'erreur ci-dessus. J'ai suivi cette post et ajouté "@babel/plugin-proposal-optional-chaining": "^7.7.4"
dans mon devDependencies
.
Ensuite, je reçois cette erreur,
Ajoutez @ babel/plugin-proposition-optional-chaining ( https://git.io/vb4Sk ) à la section 'plugins' de votre configuration Babel pour activer la transformation.
J'ai donc suivi ceci post et ajouté .babelrc
fichier dans la racine de mon projet
{
"presets": ["react", "es2015","stage-1"],
"plugins": ["transform-runtime", "transform-optional-chaining"]
}
Cela ne semblait rien faire. J'ai également entendu quelqu'un mentionner que Create React App
ne vous permet pas de modifier les configurations de babel. Donc, ma question est de savoir comment puis-je activer le chaînage optionnel sans recâbler l'ensemble CRA
?
P.S. J'utilise "TypeScript": "^3.7.2"
, ou du moins c'est ce que mon package.json
dit. J'ai essayé npm install
pour vous assurer qu'il est mis à jour. Je ne sais pas si CRA
fait quelque chose de bizarre en dessous et utilise une ancienne version de TypeScript
d'une manière ou d'une autre.
EDIT: Quand j'ai commencé le projet avec CRA
, je pense que nous utilisions TypeScript: 3.6.x
. Je voulais utiliser Optional Chaining
, j'ai donc changé mon package.json
fichier vers "TypeScript": "^3.7.2"
puis npm install
. Je pense que le problème est, TypeScript
sait que j'utilise 3.7.2
, mais CRA
a toujours une configuration plus ancienne et je ne sais pas comment je peux la mettre à jour.
Create-React-App utilise babel pour transpiler le TypeScript afin qu'il n'utilise pas votre version npm installée de TypeScript. La version 3.3.0 de react-scripts prend en charge TypeScript 3.7. Vous pouvez l'installer et l'utiliser avec:
yarn add [email protected]
-ou-
npm install -s [email protected]
React scripts 3.3.0 et supérieur le supporte. Il n'est pas nécessaire d'installer les react-scripts @ next.
Il suffit de mettre dans le package.json "react-scripts": "^3.3.0"
et cela fonctionnera.
package.json
{
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test --env=jsdom"
},
"devDependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
"customize-cra": "^0.4.1",
"react-app-rewired": "^2.1.3"
}
...other
}
config-overrides.js
const { useBabelRc, override } = require('customize-cra');
module.exports = override(useBabelRc());
. babelrc
{
"plugins": ["@babel/plugin-proposal-optional-chaining"]
}