ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΠΊΡΠΈΠΏΡΠΎΠ² 3.4.4 Π΄ΠΎ 4.0.0 Ρ Π²ΠΈΠΆΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² IE11.
ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ - ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΎΠ·Π΄Π°Π» Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ CRA, Π΄ΠΎΠ±Π°Π²ΠΈΠ» react-app-polyfill
Ρ ΡΠ²ΠΈΠ΄Π΅Π», ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠΎΠΉ package.json
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
{
"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"
]
}
}
Π’Π° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ yarn build
ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Ρ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° build/
.
ΠΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ CRA ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
(ΠΡΠ»ΠΈ ΡΠΌΠ΅ΡΡΠ½ΠΎ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π·Π΄Π΅ΡΡ ΡΠ²ΠΎΠΉ ΠΎΡΠ²Π΅Ρ.)
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
yarn add react-app-polyfill
import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable';
Π² Π½Π°ΡΠ°Π»ΠΎ index.tsx
yarn start
Π‘Π°ΠΉΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ (ΡΡΠ΄Π΅Ρ Π½Π΅ ΠΆΠ΄Ρ. Π ΡΠ΅Π»ΠΎΠΌ IE, Π½ΠΎ ΠΏΡΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° - ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ)
(ΠΡΡΠ°Π²ΡΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.)
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°Π³? ΠΡ ΠΏΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡΡΡΡ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π·Π°ΠΊΡΠΎΠ΅ΠΌ Π΅Π΅, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π½ΠΈΠΌ ΠΎΡΡΠ΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ!ΠΡΠ»ΠΈ Π½Π΅ ΠΎΡΠΈΠ±Π°ΡΡΡ, Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² IE Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·-Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ browserslist
.
(ΡΠΌ. package.json
).
@ Pierre-Do
ΠΠ°, Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ.
Π― Π·Π°Π±ΡΠ», ΡΡΠΎ IE11 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, Π½ΠΎ Ρ react-app-polyfill
ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ :(
+, ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅
https://reactjs.org/docs/error-decoder.html/?invariant=31&args [] = object% 20with% 20keys% 20% 7B% 24% 24typeof% 2C% 20type% 2C% 20key% 2C% 20ref% 2C % 20ΠΎΠ±ΡΠ΅ΠΊΡ% 2C% 20_owner% 7D
ΠΌΠΎΠΉ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ:
import 'react-app-polyfill/ie11';
// import 'react-app-polyfill/stable';
import 'core-js/stable';
import 'regenerator-runtime/runtime';
ΠΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π·Π°ΡΡΠΎΠ½ΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ @ezBill ΠΌΠ½Π΅
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, react-app-polyfill
Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ?
Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ @ezBill ΠΌΠ½Π΅
+1
ΠΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΎΡΠΈΠ±ΠΊΠ° ΠΎΡΡΠ°Π΅ΡΡΡ.
ΠΠΎΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΊ, ΠΈ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ IE11:
import "react-app-polyfill/ie11";
import "react-app-polyfill/stable";
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΡΠ΅ Π»ΡΠ±ΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΠΈΠΌΠΏΠΎΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΡΡΠΈΡ
ΠΏΠΎΠ»ΠΈΡΠΈΠ»ΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, polyfill Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
API, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ TextEncoder
ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²Π°ΠΌ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ jsx Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΎ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² /** <strong i="5">@jsxRuntime</strong> classic */
Π² Π½Π°ΡΠ°Π»ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ index.js, ΠΊΡΠ΄Π° Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ, ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ DISABLE_NEW_JSX_TRANSFORM=true
. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎ.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ, ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π² ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π·Π°Π³ΡΡΠ·ΠΈΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ, Π½ΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π΄ΠΎ ΡΡΡΠΎΠΊΠΈ import {jsx as _jsx} from 'react/jsx-runtime';
ΠΊΠΎΡΠΎΡΡΡ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.
@msbarry Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ
ΠΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΡ ΡΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ JSX (ΡΠΎΡΠΌΠ°Ρ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ React
).
Π₯ΠΎΡΠΎΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ! ΠΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ JSX!
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½Π°ΡΠ°Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° 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'
ΠΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΠ΅Π³ΠΎ Π»ΡΠ΄ΠΈ Π½Π΅ ΠΏΠΎΠΉΠΌΡΡ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π°Π²ΡΠ΅Π³Π΄Π° ΠΎΡΡΠ°Π½ΡΡΡΡ Π² Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π°.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΡΠ°Π²ΠΈΡΡ treehaking ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π΄ΠΎ React 17 :(
FWIW ΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°ΠΉΠ» index.ts
ΡΠ°ΠΉΠ»Ρ init.ts
ΠΈ main.tsx
Π³Π΄Π΅ init.ts
ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ, Π° main.tsx
- ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° ( ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄ React), Π° index.ts
ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π»ΡΠ±ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ, Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»ΠΎΠ², Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ
ΠΎΠ΄Π°.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ΅ΠΌ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ°ΠΆΠ΅ΡΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠΈΠ±ΠΊΠΈ IE11 Ρ
Π©Π΅Π»ΡΠΎΠΊ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΡΡΠ΄Π°
ΠΠ΅ΡΡΠΈΡ IE
ΠΠΎΡ ΡΡΠΏΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ
npx create-react-app ie11app
yarn add react-app-polyfill
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')
);
ie 11
Π² browerslist
Π² 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"
]
}
}
yarn start
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ import 'react-app-polyfill/stable';
ΠΈΠ· index.js.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ import 'react-app-polyfill/ie11'
ΠΡΠΎ Π½Π΅ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠ»ΠΎΠΌ. ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ES5, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ IE11. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ "ie >= 11"
Π² Π²Π°ΡΠ΅ΠΌ browserslist
Π²ΠΌΠ΅ΡΡΠΎ "ie 11"
. ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ, Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
@ Dan503 @pluma Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈ "ie >= 11"
ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ import 'react-app-polyfill/stable';
, Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π±Π΅Π·ΡΡΠΏΠ΅ΡΠ½ΠΎ.
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΡΠ°ΠΊΡΡ ββΠ΄ΠΎΠ±ΡΠΎΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ npx create-react-app ie11app
ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π²Π°Ρ Π² IE11?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ:
ΠΠΎΠ·Π²ΡΠ°Ρ ΠΊ "react-scripts": "^3.0.0"
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ IE 11
Π΄Π°ΠΆΠ΅ Ρ "react": "^17.0.1",
ΠΠΎ "react-scripts": "4.0.0"
Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ
Π― ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, - ΡΡΠΎ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ 3.4.4
react-scripts
Π΄ΠΎ 3.4.4
.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
+, ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅
https://reactjs.org/docs/error-decoder.html/?invariant=31&args [] = object% 20with% 20keys% 20% 7B% 24% 24typeof% 2C% 20type% 2C% 20key% 2C% 20ref% 2C % 20ΠΎΠ±ΡΠ΅ΠΊΡ% 2C% 20_owner% 7D