web-dev-qa-db-fra.com

Les fichiers plugin / prédéfinis de Babel ne sont pas autorisés à exporter des objets, mais uniquement des fonctions.

Je suis habitué à utiliser Babel-loader sur un ancien projet et je remarque quelques problèmes liés au fait que Babel Loader fonctionne sur des objets encapsulés. Est-ce le comportement par défaut de Babel Loader? Je ne suis pas sûr que ce soit un bug ou quelque chose qui cloche mal, je n'ai pas trouvé grand chose à ce sujet sur Google, c'est donc ma dernière ressource.

Aurais-je besoin de changer quelque chose à mon code pour le faire fonctionner?

Voici mes spécifications actuelles: Webpack: 3.19.0 babel/core: 7.0.0-beta.34 babel-loader: 8.0.0-beta.0

S'il vous plaît se référer à mon packages.json si nécessaire:

http://paste.ubuntu.com/26187880/

Je suis tryng pour charger un seul fichier encapsulé dans une fonction:

http://paste.ubuntu.com/26187814/

En reprenant quelque chose de vieux, construit comme ça:

(  window.global = { } )();

Ceci est ma config de webpack:

const webpackConfig = {
    context: __dirname,
    entry: {
        app: '../../JavaScript/Namespacing.js'
    },
    module: {
        rules: [
          {
            test: /.jsx?$/,
            exclude: /(node_modules|bower_components)/,
            use: {
              loader: 'babel-loader',
            }
          }
        ]
    },
    output: {
      path: __dirname + "/../../static/js",
      filename: "[name].js"
    },
    plugins: [
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery",
            "window.jQuery": "jquery"
        })
    ],
}

Et l'erreur que j'obtiens sur mon dossier est la suivante:

Plugin/Preset files are not allowed to export objects, only functions.

Alors, est-ce que je manque quelque chose?

Merci pour toute aide.

34
Gabriel Slomka

J'ai la même erreur avec babel 7.x et et "babel-loader": "^8.0.4"

J'ai résolu le problème en modifiant les dépendances suivantes dans package.json.j'ai trouvé la solution à partir de ce lien

"devDependencies": {
    "@babel/core": "^7.1.6",
    "@babel/preset-env": "^7.1.6",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.4",
    "webpack": "^4.25.1",
    "webpack-cli": "^3.1.2"
}

et dans .babelrc

{
    "presets": ["@babel/env", "@babel/react"]
}

ou en package.json

"babel": {
    "presets": [
        "@babel/env",
        "@babel/react"
    ]
},

Si vous utilisez npm, utilisez ce qui suit

npm install @babel/core --save-dev
npm install @babel/preset-env --save-dev
npm install @babel/preset-react --save-dev
npm install babel-loader --save-dev
npm install webpack --save-dev
npm install webpack-cli --save-dev

Si vous utilisez du fil, utilisez ce qui suit

yarn add @babel/core --dev
yarn add @babel/preset-env --dev
yarn add @babel/preset-react --dev
yarn add babel-loader --dev
yarn add webpack --dev
yarn add webpack-cli --dev
55
Prince Francis

Dans votre package.json, je constate que vous utilisez d'anciens plug-ins et presets destinés à Babel v6, ce qui entraînera l'apparition de ce message d'erreur. Vous devez passer par exemple à @babel/preset-env, puis mettre à jour votre .babelrc en conséquence (si vous fournissez .babelrc, des instructions plus précises peuvent être données).

Voici un billet associé avec quelques explications - https://github.com/babel/babel-loader/issues/54

Quelques notes plus semi-connexes sur ce que je vois dans package.json:

L'ancienne dépendance babel-core est toujours là. Supprimez-le ou mettez-le à jour avec la version 7.0.0-bridge.0. De même, l'ancien préréglage de réaction est présent, supprimez-le.

Si vous utilisez le préréglage env, vous n'avez pas besoin d'utiliser le préréglage es2015. Enlevez-le.

9
Spain Train