web-dev-qa-db-fra.com

L'utilisation de babel-polyfill n'est pas définie dans IE11

Comme le titre le dit, même j'aimerais utiliser babel-polyfill pour pouvoir utiliser des promesses dans mon code, mais je reçois cette erreur non définie dans IE11.

Cela fait un certain temps que j'essaie de faire fonctionner ce projet, comme je l'ai déjà constaté à plusieurs reprises dans différents sites, mais aucune des solutions ne fonctionnait vraiment pour moi (ou plus exactement, je n'ai probablement pas pu l'adapter à mon code)

Ce sont les fichiers qui, je pense, sont impliqués:

.babelrc

{
    "presets": [
        "es2015",
        "react"
    ]
}

package.json: J'ai babel-polyfill sous dev-dependencies et j'ai essayé de le placer sous dépendances (à la fois simplement l'échanger manuellement et l'installer via la console) et aucun ne semblait fonctionner

Mon script.js ne l'a pas comme importation (mais si j'ai essayé d'importer @ babel-polyfill, ou les différentes combinaisons avec une barre oblique lorsque j'ai vu cette syntaxe dans package.json, le module ne se trouve pas)

Enfin, mon gulpfile.babel.js a cette tâche:

gulp.task('build:js', ['lint'], () => {
    return browserify({
            entries: path.resolve(paths().source.js, 'script.js'),
            extensions: ['.jsx'],
            debug: true
        })
        .transform(babelify)
        .plugin('minifyify', {
            map: 'script.js.map.json',
            output: path.resolve(paths().public.js, 'script.js.map.json')
        })
        .bundle()
        .pipe(source('script.js'))
        .pipe(gulp.dest(path.resolve(paths().public.js)))
        .pipe(notify({
            onLast: true,
            message: 'Building JS done'
        }));
});

Qu'est-ce que je fais mal?

Merci

1
mitomed

Vous devez importer Babel polyfilly avant any autre code non polyfill dans votre point d’entrée JS:

import 'babel-polyfill';

ou si vous êtes déjà passé à Babel 7:

import '@babel/polyfill';

Notez également que vous devez basculer vos presets sur preset-env. Je vous recommande de passer à Babel 7 et d'utiliser @babel/preset-env.

En supposant que vous ayez basculé vers Babel 7, voici à quoi devrait ressembler votre .babelrc:

{
  "presets": [
    [ "@babel/preset-env", {
      "targets": {
        "browsers": [ "last 1 version", "ie >= 11" ]
      }
    }]
  ]
}
4
connexo