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

◇◆丶佛笑我妖孽 提交于 2019-11-27 01:28:35

问题


I`m tryng to use Babel-loader on an old project, and i notice some issues regarding when babel loader is working on wrapped objects, is this its default behaviour ? I am not sure if this is a bug or something im doing wrong, i could not find much about it over google, so this is my last resource.

Would i need to change something to my code to make it work ?

This are my current specs: Webpack: 3.19.0 babel/core: 7.0.0-beta.34 babel-loader: 8.0.0-beta.0

Please refer to my packages.json if needed:

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

I`m tryng to load a single file wrapped in a function:

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

Resuming, something old, that is built like this:

(  window.global = { } )();

This is my webpack config:

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"
        })
    ],
}

And the error i get on my file is the following:

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

So, am i missing something ?

Thanks for any help.


回答1:


I got the same error with babel 7.x and and "babel-loader": "^8.0.4"

I solved the issue by changing the following dependencies in package.json. I got the solution from these link

"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"
}

and in .babelrc

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

or in package.json

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

If you are using npm then use the following

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

If you are using yarn, then use the following

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



回答2:


From your package.json, I can see that you are using older plugins and presets meant for Babel v6, which will result in this error message. You need to switch to e.g., @babel/preset-env, then update your .babelrc accordingly (if you provide .babelrc, more specific guidance can be given).

Here is a related ticket with some explanation - https://github.com/babel/babel-loader/issues/540

A few more semi-related notes on what I see in package.json:

The old babel-core dependency is still there. Remove this or update it to version 7.0.0-bridge.0. Similarly, the old react preset is in there, remove it.

If you are using the env preset, you do not need to use the es2015 preset at all. Remove it.



来源:https://stackoverflow.com/questions/47830273/babel-plugin-preset-files-are-not-allowed-to-export-objects-only-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!