Create-react-app: Les applications avec `react-scripts` v4.0.0 ne fonctionnent pas dans IE11

Créé le 25 oct. 2020  ·  18Commentaires  ·  Source: facebook/create-react-app

Décrivez le bogue

Après avoir mis à niveau mon application de react-scripts 3.4.4 vers 4.0.0, je vois que l'application ne fonctionne pas du tout dans IE11.
De plus, lorsque j'ai créé une nouvelle application à partir de la dernière ARC, j'ai ajouté react-app-polyfill je vois que cela ne fonctionne pas du tout.
image

Mon package.json ressemble à ceci:

{
  "name": "cra4",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "@types/jest": "^26.0.15",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.53",
    "@types/react-dom": "^16.9.8",
    "react": "^17.0.1",
    "react-app-polyfill": "2.0.0",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.0",
    "typescript": "^4.0.3",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ]
  }
}

La même erreur apparaît également lorsque j'exécute yarn build et que je sers à partir du répertoire build/ .

Avez-vous essayé de récupérer vos dépendances?

C'est le comportement par défaut de l'ARC.

Quels termes avez-vous recherchés dans le Guide de l'utilisateur?

Il existe quelques problèmes documentés courants, tels que l'observateur ne détectant pas les modifications ou l'échec de la construction. Ils sont décrits dans la section Dépannage du Guide de l'utilisateur: https://facebook.github.io/create-react-app/docs/troubleshooting Veuillez parcourir ces quelques sections pour les problèmes courants. De plus, vous pouvez rechercher dans le Guide de l'utilisateur quelque chose avec lequel vous rencontrez des problèmes: https://facebook.github.io/create-react-app/ Si vous n'avez pas trouvé la solution, veuillez partager les mots que vous avez recherchés . Cela nous aide à améliorer la documentation pour les futurs lecteurs qui pourraient rencontrer le même problème.

(Écrivez votre réponse ici, le cas échéant.)

Environnement

Pour vous aider à identifier si un problème est spécifique à une plate-forme, un navigateur ou une version de module, des informations sur votre environnement sont requises. Cela permet aux responsables de la maintenance de reproduire rapidement le problème et de donner leur avis. Exécutez la commande suivante dans le dossier de votre application React dans le terminal. Remarque: le résultat est copié directement dans votre presse-papiers. `npx create-react-app --info` Collez la sortie de la commande dans la section ci-dessous.
Environment Info:

  current version of create-react-app: 3.4.1
  running from C:\Users\XXX\AppData\Local\Yarn\Data\global\node_modules\create-react-app

  System:
    OS: Windows 10 10.0.19041
    CPU: (16) x64 AMD Ryzen 7 3700X 8-Core Processor
  Binaries:
    Node: 14.14.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.5 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.14.8 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: 44.19041.423.0
    Internet Explorer: 11.0.19041.1
  npmPackages:
    react: ^17.0.1 => 17.0.1
    react-dom: ^17.0.1 => 17.0.1
    react-scripts: 4.0.0 => 4.0.0
  npmGlobalPackages:
    create-react-app: Not Found

Étapes à suivre pour reproduire

  1. Créer une nouvelle application ARC avec le modèle dactylographié utilisé
  2. yarn add react-app-polyfill
  3. Ajoutez import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable'; en haut de index.tsx
  4. yarn start
  5. Observez que le site fonctionne parfaitement dans les navigateurs normaux et que c'est un écran vide dans l'IE

Comportement prévisible

Comment vous attendiez-vous à ce que l'outil se comporte? C'est bien si vous n'êtes pas sûr que votre compréhension soit correcte. Écrivez simplement ce que vous pensiez qu'il se passerait.

Le site devrait fonctionner (je ne m'attends pas à des miracles. C'est globalement un IE, mais la page blanche est très mauvaise)

Comportement réel

Quelque chose s'est mal passé? Quelque chose est cassé ou ne se comporte pas comme prévu? Veuillez joindre des captures d'écran si possible! Ils sont extrêmement utiles pour diagnostiquer les problèmes.

image

Démo reproductible

Si vous le pouvez, partagez un projet qui reproduit le problème. C'est le moyen le plus efficace de résoudre rapidement un problème. Il existe deux façons de le faire: * Créez une nouvelle application et essayez de reproduire le problème. Ceci est utile si vous savez à peu près où se trouve le problème ou si vous ne pouvez pas partager le vrai code. * Ou copiez votre application et supprimez des éléments jusqu'à ce qu'il vous reste la démo reproductible minimale. Ceci est utile pour trouver la cause première. Vous pouvez ensuite éventuellement créer un nouveau projet. Voici un bon guide pour créer des démos de bogues: https://stackoverflow.com/help/mcve Une fois que vous avez terminé, transférez le projet sur GitHub et collez le lien ci-dessous:

(Collez le lien vers un exemple de projet et des instructions précises pour reproduire le problème.)

Que se passe-t-il si vous sautez cette étape? Nous essaierons de vous aider, mais dans de nombreux cas, c'est impossible car il manque des informations cruciales. Dans ce cas, nous marquerons un problème comme ayant une priorité faible et le clôturerons éventuellement s'il n'y a pas de direction claire. Nous apprécions toujours le rapport, car quelqu'un d'autre pourrait éventuellement en créer un exemple reproductible. Merci de nous aider à vous aider!
bug report needs triage

Commentaire le plus utile

+, même problème sur la version de production
https://reactjs.org/docs/error-decoder.html/?invariant=31&args [] = object% 20with% 20keys% 20% 7B% 24% 24typeof% 2C% 20type% 2C% 20key% 2C% 20ref% 2C % 20props% 2C% 20_owner% 7D
image

Tous les 18 commentaires

Si je ne me trompe pas, un nouveau projet ne fonctionnera pas du tout sur IE en mode développement en raison de la configuration browserslist .

image

(voir package.json ).

@ Pierre-Do
Oui, j'ai mis à jour mon problème avec les informations manquantes.
J'ai oublié que IE11 n'est pas pris en charge par défaut, mais avec react-app-polyfill ne fonctionne pas aussi bien :(

+, même problème sur la version de production
https://reactjs.org/docs/error-decoder.html/?invariant=31&args [] = object% 20with% 20keys% 20% 7B% 24% 24typeof% 2C% 20type% 2C% 20key% 2C% 20ref% 2C % 20props% 2C% 20_owner% 7D
image

ma solution de contournement:

import 'react-app-polyfill/ie11';
// import 'react-app-polyfill/stable';
import 'core-js/stable';
import 'regenerator-runtime/runtime';

Je suis également concerné par ce problème

Je peux confirmer que la solution @ezBill fonctionne pour moi.
Peut-être que react-app-polyfill doit être corrigé?

Je peux confirmer que la solution @ezBill fonctionne pour moi.

+1

La solution de contournement ne fonctionne pas pour moi, l'erreur persiste.

Mes polyfills ressemblent à ceci et je n'ai aucun problème avec IE11:

import "react-app-polyfill/ie11";
import "react-app-polyfill/stable";

Notez que ceux-ci doivent être supérieurs à toute autre importation qui se briserait sans ces polyfills en place. De plus, le polyfill ne fournit pas d'API plus ésotériques comme TextEncoder , vous devrez donc toujours charger des polyfills pour ceux-ci si vous en avez besoin pour une raison quelconque.

Je pense que la nouvelle transformation jsx est à l'origine de cela, essayez de la désactiver soit en ajoutant /** <strong i="5">@jsxRuntime</strong> classic */ en haut de votre index.js principal où vous importez également vos polyfills - ou en définissant la variable d'environnement DISABLE_NEW_JSX_TRANSFORM=true . Dans mon cas, l'un ou l'autre corrige ce problème.

Je suppose qu'en important les polyfills en premier, vous pouvez les charger avant de réagir, mais vous ne pouvez pas les faire charger avant la ligne import {jsx as _jsx} from 'react/jsx-runtime'; que le compilateur insère.

@msbarry Je peux confirmer que cela résout le problème ici. Merci pour l'aide!

Nous avons rencontré ce même problème. Nous avions déjà converti une grande partie de notre base de code au nouveau format JSX (le format où vous n'avez plus besoin d'importer React ).

Bonnes nouvelles! Nous avons pu conserver l'intégralité de la nouvelle syntaxe JSX!

Nous n'avons eu qu'à appliquer cela en haut de notre fichier src/index.js .

/** <strong i="10">@jsxRuntime</strong> classic */
import 'react-app-polyfill/ie11'

// IE11 needs "jsxRuntime classic" for this initial file which means that "React" needs to be in scope
// https://github.com/facebook/create-react-app/issues/9906
import React from 'react'

Ajout du commentaire car sinon, nous pourrions voir que c'est quelque chose que les gens ne comprendraient pas et laisseraient probablement traîner dans la base de code pour toujours.

Le seul inconvénient est que nous n'arrivons pas à réduire la taille de notre bundle, ce qui était l'une des principales raisons pour lesquelles nous avons mis à niveau vers React 17 en premier lieu :(

FWIW, nous divisons le fichier index.ts en un fichier init.ts et main.tsxinit.ts importe tous les polyfills pertinents et main.tsx est le point d'entrée réel ( contenant le code React) et index.ts importe simplement les deux dans l'ordre. Cela garantit que tous les modules qui peuvent avoir besoin des polyfills pour être en vigueur sont chargés après les polyfills et la dénomination garantit que même lors de l'utilisation du tri automatique des importations, les polyfills viennent avant le point d'entrée principal.

Cela peut être une solution plus pratique que d'avoir à contourner ce problème.

Rien de ce qui précède ne semble fonctionner.

Erreurs IE11 avec

image

Cliquer sur l'erreur nous amène ici

image

Version IE

image

Voici un exemple super simple à reproduire

  1. npx create-react-app ie11app
  2. yarn add react-app-polyfill
  3. Mettez à jour le index.js
/** <strong i="23">@jsxRuntime</strong> classic */
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';
import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
    <div>Come on</div>,
  document.getElementById('root')
);
  1. Ajouter ie 11 à browerslist en package.json
{
  "name": "ie11app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "^17.0.1",
    "react-app-polyfill": "^2.0.0",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.0",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all",
      "ie 11"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version",
      "ie 11"
    ]
  }
}
  1. yarn start

Essayez de supprimer import 'react-app-polyfill/stable'; de index.js.

Vous n'avez besoin que de import 'react-app-polyfill/ie11'

Cela ne ressemble pas à un problème de polyfill. Le code que vous voyez dans le débogueur n'est pas ES5, il utilise des arguments de déstructuration et par défaut, dont aucun n'est pris en charge par IE11. Essayez d'utiliser "ie >= 11" dans votre browserslist au lieu de "ie 11" . C'est ce que j'ai, je ne sais pas si l'une ou l'autre syntaxe devrait fonctionner.

@ Dan503 @pluma J'ai essayé les deux, "ie >= 11" et en supprimant import 'react-app-polyfill/stable'; , mais toujours pas de chance.

Pourriez-vous être si gentil et créer un nouveau npx create-react-app ie11app et vérifier s'il fonctionne toujours pour vous sur IE11?

Je vous remercie

Mettre à jour:
Le retour à "react-scripts": "^3.0.0" fonctionne sur IE 11 même avec "react": "^17.0.1",
Mais "react-scripts": "4.0.0" est toujours cassé pour moi

J'ai également essayé plusieurs de ces solutions. Le seul qui a fonctionné a été de rétrograder react-scripts à 3.4.4 .

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

dualcnhq picture dualcnhq  ·  3Commentaires

barcher picture barcher  ·  3Commentaires

jnachtigall picture jnachtigall  ·  3Commentaires

stopachka picture stopachka  ·  3Commentaires

adrice727 picture adrice727  ·  3Commentaires