рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП IE11 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
TypeError: Object doesn't support property or method 'find'
рдЕрдЧрд▓реЗ 2.4.6
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓реЗрдХрд┐рди рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рдкрд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╕реНрдЯрдо рдХреЗ рд╕рд╛рде babel-preset-env
рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо .babelerc рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
{
"presets": [
"es2015",
"react",
"next/babel",
"stage-0",
[ "env", {
"targets": {
"safari": 10,
"ie": 11
},
"modules": false,
"useBuiltIns": true,
"debug": true
}]
],
}
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдбрд┐рдмрдЧ рдзреНрд╡рдЬ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЙрдЧ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
babel-preset-env: `DEBUG` option
Using targets:
{
"safari": "10",
"ie": "11"
}
Modules transform: false
Using plugins:
check-es2015-constants {"ie":"11"}
transform-es2015-arrow-functions {"ie":"11"}
transform-es2015-block-scoping {"ie":"11"}
transform-es2015-classes {"ie":"11"}
transform-es2015-computed-properties {"ie":"11"}
transform-es2015-destructuring {"ie":"11"}
transform-es2015-duplicate-keys {"ie":"11"}
transform-es2015-for-of {"ie":"11"}
transform-es2015-function-name {"ie":"11"}
transform-es2015-literals {"ie":"11"}
transform-es2015-object-super {"ie":"11"}
transform-es2015-parameters {"ie":"11"}
transform-es2015-shorthand-properties {"ie":"11"}
transform-es2015-spread {"ie":"11"}
transform-es2015-sticky-regex {"ie":"11"}
transform-es2015-template-literals {"ie":"11"}
transform-es2015-typeof-symbol {"ie":"11"}
transform-es2015-unicode-regex {"ie":"11"}
transform-regenerator {"ie":"11"}
transform-exponentiation-operator {"safari":"10","ie":"11"}
transform-async-to-generator {"safari":"10","ie":"11"}
syntax-trailing-function-commas {"ie":"11"}
Using polyfills:
es6.typed.array-buffer {"ie":"11"}
es6.typed.int8-array {"ie":"11"}
es6.typed.uint8-array {"ie":"11"}
es6.typed.uint8-clamped-array {"ie":"11"}
es6.typed.int16-array {"ie":"11"}
es6.typed.uint16-array {"ie":"11"}
es6.typed.int32-array {"ie":"11"}
es6.typed.uint32-array {"ie":"11"}
es6.typed.float32-array {"ie":"11"}
es6.typed.float64-array {"ie":"11"}
es6.map {"ie":"11"}
es6.set {"ie":"11"}
es6.weak-map {"ie":"11"}
es6.weak-set {"ie":"11"}
es6.reflect.apply {"ie":"11"}
es6.reflect.construct {"ie":"11"}
es6.reflect.define-property {"ie":"11"}
es6.reflect.delete-property {"ie":"11"}
es6.reflect.get {"ie":"11"}
es6.reflect.get-own-property-descriptor {"ie":"11"}
es6.reflect.get-prototype-of {"ie":"11"}
es6.reflect.has {"ie":"11"}
es6.reflect.is-extensible {"ie":"11"}
es6.reflect.own-keys {"ie":"11"}
es6.reflect.prevent-extensions {"ie":"11"}
es6.reflect.set {"ie":"11"}
es6.reflect.set-prototype-of {"ie":"11"}
es6.promise {"ie":"11"}
es6.symbol {"ie":"11"}
es6.object.assign {"ie":"11"}
es6.object.is {"ie":"11"}
es6.function.name {"ie":"11"}
es6.string.raw {"ie":"11"}
es6.string.from-code-point {"ie":"11"}
es6.string.code-point-at {"ie":"11"}
es6.string.repeat {"ie":"11"}
es6.string.starts-with {"ie":"11"}
es6.string.ends-with {"ie":"11"}
es6.string.includes {"ie":"11"}
es6.regexp.flags {"ie":"11"}
es6.regexp.match {"ie":"11"}
es6.regexp.replace {"ie":"11"}
es6.regexp.split {"ie":"11"}
es6.regexp.search {"ie":"11"}
es6.array.from {"ie":"11"}
es6.array.of {"ie":"11"}
es6.array.copy-within {"ie":"11"}
es6.array.find {"ie":"11"}
es6.array.find-index {"ie":"11"}
es6.array.fill {"ie":"11"}
es6.array.iterator {"ie":"11"}
es6.number.is-finite {"ie":"11"}
es6.number.is-integer {"ie":"11"}
es6.number.is-safe-integer {"ie":"11"}
es6.number.is-nan {"ie":"11"}
es6.number.epsilon {"ie":"11"}
es6.number.min-safe-integer {"ie":"11"}
es6.number.max-safe-integer {"ie":"11"}
es6.math.acosh {"ie":"11"}
es6.math.asinh {"ie":"11"}
es6.math.atanh {"ie":"11"}
es6.math.cbrt {"ie":"11"}
es6.math.clz32 {"ie":"11"}
es6.math.cosh {"ie":"11"}
es6.math.expm1 {"ie":"11"}
es6.math.fround {"ie":"11"}
es6.math.hypot {"ie":"11"}
es6.math.imul {"ie":"11"}
es6.math.log1p {"ie":"11"}
es6.math.log10 {"ie":"11"}
es6.math.log2 {"ie":"11"}
es6.math.sign {"ie":"11"}
es6.math.sinh {"ie":"11"}
es6.math.tanh {"ie":"11"}
es6.math.trunc {"ie":"11"}
es7.array.includes {"ie":"11"}
es7.object.values {"safari":"10","ie":"11"}
es7.object.entries {"safari":"10","ie":"11"}
es7.object.get-own-property-descriptors {"safari":"10","ie":"11"}
es7.string.pad-start {"ie":"11"}
es7.string.pad-end {"ie":"11"}
web.timers {"safari":"10","ie":"11"}
web.immediate {"safari":"10","ie":"11"}
web.dom.iterable {"safari":"10","ie":"11"}
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд░рдирдЯрд╛рдЗрдо рдкрд░, рдореБрдЭреЗ рдЕрднреА рднреА IE11 рдкрд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрдм рдореИрдВ рдХрд┐рд╕реА рд╕рд░рдгреА рдкрд░ .find () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред
рдХреБрдЫ рднреА рдореИрдВ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░реА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ @ https://github.com/jonaswindey/next-polyfill-bug
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдлрд┐рдХреНрд╕ рдПрдХ рдХрд╕реНрдЯрдо рд▓реЗрдЖрдЙрдЯ рд╣реИ редjs рдФрд░ рдЬреЛрдбрд╝рдирд╛
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js' />
@arunoda рд╣рдордиреЗ рдЗрд╕реЗ рд╕рд╣реА un рд╕реЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ
рд╣реЙрдЯ-рдлрд╝рд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import 'core-js/fn/array/find'
const test = ['hi', 'there'].find(item => item === 'hi')
export default () => (
<div>{test}, welcome to next.js!</div>
)
рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЛ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмреИрдмреЗрд▓ рдРрдк рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рди рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкреЙрд▓реАрдлрд┐рд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЧрд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдзрд┐рдХ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред
рдмреЗрдЭрд┐рдЭрдХ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ред
@arunoda I рдиреЗ рдЗрд╕ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХреЛ _document.js рдХреЗ рдЕрдВрджрд░ import 'core-js/fn/array/find'
рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ IE11 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред
рдореБрдЭреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдерд╛:
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js' />
рдореИрдВ Next.js V3.0.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рд╕рднреА рдХреЛ рдкреНрд░рдгрд╛рдоред
рдореИрдВрдиреЗ next.config.js
рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐-рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ
(https://github.com/zeit/next.js/blob/master/server/build/webpack.js#L42 рдХреЗ рдЕрдиреБрд╕рд╛рд░):
module.exports = {
// eslint-disable-next-line no-unused-vars
webpack(config, _) {
const entry = async () => {
const resolvedEntry = await config.entry()
const entryWithPolyfill = Object.assign(
{ 'babel-polyfill': ['babel-polyfill'] },
resolvedEntry
)
// console.log(entryWithPolyfill)
return entryWithPolyfill
}
return Object.assign(
config,
entryWithPolyfill
)
}
}
рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдмреЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ babel-polyfill
? рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрдо рд╣реИред
@ рд░реБрдиреЛрджрд╛ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди? рдкреЙрд▓реАрдлрд┐рд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ
рдЗрд╕рдореЗрдВ рднреА рд░реБрдЪрд┐ ЁЯдФ
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреИрдмреЗрд▓ рдкреЙрд▓реАрдлрд┐рд▓реНрд╕ рдХреЛ рддрдп рдХрд┐рдпрд╛:
import 'babel-polyfill';
рдкреВрд░реЗ babel-polyfill
рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рдмреЗрдХрд╛рд░ рд╣реИ рдФрд░ рдпрд╣ рдЕрдЧрд▓реЗ .js, imho рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдЧрд╛ред рдпрд╣ рдмрдВрдбрд▓ рдореЗрдВ 87kb рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЪрд╛рд╣реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрдб рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВред
@sholzmayer рдиреЗ рдЖрдк import 'babel-polyfill';
рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ _document.js рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХреА
@klaemo рддреЛ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ?
transform-runtime
рд╕реЗ .babelrc
рдкреНрд▓рдЧ рдЗрди рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд╣рдо Opera 36 рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ Object.entries рдирд╣реАрдВ рдмрдиреЗ рд╣реИрдВред
"plugins": [
"transform-runtime"
]
@hugotox рдПрдХ рдРрдк рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк https://polyfill.io рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ polyfills.js
рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
// Language features presented by https://github.com/zloirock/core-js
import 'core-js/fn/object/assign'
import 'core-js/fn/string/ends-with'
import 'core-js/fn/string/starts-with'
import 'core-js/fn/string/includes'
import 'core-js/fn/array/includes'
import 'core-js/fn/weak-map'
// browser features
import 'raf/polyfill'
import 'isomorphic-fetch'
import 'js-polyfills/url'
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдиреЗрдХреНрд╕реНрдЯ core-js
рдЬрд░реВрд░рдд рдХреЗ рд╕рднреА рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдЖрдпрд╛рдд рдФрд░ рдмрдВрдбрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
@igimanaloto рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛
рдореИрдВ рднреА transform-runtime
рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ IE рдкрд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
{
"plugins": [
"source-map-support",
"transform-runtime"
],
"presets": [
["env", {
"targets": {
"node": "6.10"
}
}],
["stage-3"],
[
"next/babel",
{
"styled-jsx": {
"optimizeForSpeed": true,
"vendorPrefixes": true,
"sourceMaps": true,
"plugins": [
"styled-jsx-plugin-sass"
]
}
}
]
]
}
@bliitzkrieg babel-polyfill
_document.js
рдЖрдпрд╛рдд рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ _document.js
рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЖрдорддреМрд░ рдкрд░, рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХреА рдЧрдИ рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ рдареАрдХ рдХрд░реЗрдЧреАред
рдЕрджреНрдпрддрди: IE резреж, резрез рдХреЗ рд▓рд┐рдП core-js/library/fn/object/assign
client/polyfill.js
core-js/fn/object/assign
рдмрджрд▓рд╛ (рдХреИрд╕реЗ
рдпрд╣рд╛рдБ рдКрдкрд░ @klaemo рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рдВрдпреЛрдЬрди рдФрд░ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг, рдХреИрдирд░реА / рдЙрджрд╛рд╣рд░рдг / рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рд╕рд╛рде рдирд┐рдпреЛрдЬрд┐рдд next 5.1.0
рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
[рдореВрд▓ рдкреНрд░рд╢реНрди] рдореЗрд░реЗ рдЧреНрд░рд╛рд╣рдХ / polyfills.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ core-js
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ IE11 рдорд┐рд▓рддрд╛ рд╣реИ? (рдореИрдВ рдПрдХ рдЖрдпрд╛рдд рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ IE11 рд╕рдмрдХреБрдЫ рдЧрд╛рдпрдм рд╣реИ рдФрд░ рдлрд┐рд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рд░реЗрдВрдЬ рдХреЛ рдЬреАрддрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдРрдк рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдпрд╣рд╛рдБ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдгрд╛рдо рдореИрдВрдиреЗ рдХреБрдЫ OS + рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдпреЛрдЬрдиреЛрдВ (Browserstack рдкрд░) рдкрд░ рдФрд░ рдпрд╣ рддрдм рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ Windows 10 + IE11 (рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛) рдкрд░
рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░, .babelrc рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдо 43 рдкрд░ next 5.1.0
рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред import 'core-js/fn/object/assign';
рдиреЗ рдЪрд╛рд▓ рдЪрд▓реАред
рдЗрд╕ рдХреАрдбрд╝реЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ! рдореИрдВ IE 11 рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдорджрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдПрдПрдирдПрд╕рдЖрдИ-рд░реЗрдЧреЗрдХреНрд╕ рдкреИрдХреЗрдЬ рд▓рдЧрддреА рд╣реИ рдЬреЛ рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдЕрдЧрд▓реЗ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдмрдирддреА рд╣реИред
@arunoda @timneutkens рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рд╛рдВ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рдореИрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
import 'core-js/fn/object/assign'
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛ред
core-js
рдкрд╣рд▓реЗ ( yarn add core-js
) рдЬреЛрдбрд╝рдирд╛ рдерд╛ - рдмреЗрд╢рдХред
рдореБрдЭреЗ рдпрд╣ рдорджрджрдЧрд╛рд░ рд▓рдЧрд╛: https://github.com/aspnet/JavaScriptServices/wiki/Supporting-Internet-Explorer-11- (рдпрд╛ рдкреБрд░рд╛рдиреЗ)
рдХреГрдкрдпрд╛ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП ES6 рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЬреЛрдбрд╝реЗрдВред
рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛ред @arunoda
рдореБрдЭреЗ рдСрдмреНрдЬреЗрдХреНрдЯ 11, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВред String.endsWith on ie11 (рдЕрдЧрд▓реЗ@6.0.3 рдкрд░)
const {basedir} = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('./ рд╕рд░реНрд╡рд░ / рд╡рд┐рдиреНрдпрд╛рд╕');
рдЧреИрд░-рд╕рджрд╛рдмрд╣рд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП // рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдЖрд╡рд╢реНрдпрдХ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ)
рдХрд╛рд╕реНрдЯ рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрд╕ = [
'рдХреЛрд░-js / fn / рд╡рд╕реНрддреБ / рдЕрд╕рд╛рдЗрди',
'рдХреЛрд░-js / fn / рд╕реНрдЯреНрд░рд┐рдВрдЧ / рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ-рдХреЗ рд╕рд╛рде',
'рдХреЛрд░-js / fn / рд╕реНрдЯреНрд░рд┐рдВрдЧ / рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ-рдХреЗ рд╕рд╛рде',
'рдХреЛрд░-js / fn / рд╕реНрдЯреНрд░рд┐рдВрдЧ / рд╢рд╛рдорд┐рд▓ рд╣реИ,
'рдХреЛрд░-js / fn / рд╕рд░рдгреА / рд╢рд╛рдорд┐рд▓ рд╣реИ,
'рдХреЛрд░-js / fn / рдХрдордЬреЛрд░ рдирдХреНрд╢рд╛',
];
module.exports = {
webpack: (config, {dev, isServer}) => {
const originalEntry = config.entry;
if (!isServer) {
config.entry = async () => {
const entries = await originalEntry();
Object.values(entries).forEach(entry => {
entry.unshift(...polyfills);
if (dev) {
entry.unshift('eventsource-polyfill');
}
});
return entries;
};
}
return config;
},
};
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдХрднреА-рдХрднреА рдорд┐рд▓рддрд╛ рд╣реИ
Cannot redefine non-configurable property 'endsWith'
рдореИрдВрдиреЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред
IE11 рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ client/polyfills.js
:
import 'core-js/es6/map';
import 'core-js/es6/set';
import 'core-js/fn/object/assign';
import 'core-js/fn/string/ends-with';
import 'core-js/fn/string/starts-with';
import 'core-js/fn/string/includes';
import 'core-js/fn/array/includes';
import 'core-js/fn/array/find';
import 'core-js/fn/number/is-finite';
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрдм рднреА рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдирдВрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдРрдк рдмрд╣реБрдд рдХрдо рд╣реИред
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ IE11 рдореЗрдВ рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпрд╛ рд╣реИ?
рдХрдХреНрд╖рд╛ рдлреВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ...
рдЖрдкрдХреЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрд╕ рдореЗрдВ 'рдЖрдпрд╛рдд' рдХреЛрд░-рдЬреЗрдПрд╕ / рдПрд╕ 6 / рдСрдмреНрдЬреЗрдХреНрдЯ ';' рд▓рд╛рдЗрди
рдореИрдВрдиреЗ рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
@peec рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐? рдореБрдЭреЗ рдРрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА рдЬреЛ рдЕрдпреЛрдЧреНрдп рдереА?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдлрд┐рдХреНрд╕ рдПрдХ рдХрд╕реНрдЯрдо рд▓реЗрдЖрдЙрдЯ рд╣реИ редjs рдФрд░ рдЬреЛрдбрд╝рдирд╛
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js' />