Jornve
Jornve

Reputation: 299

React 16: script1002 syntax error on IE11 and below

screenshot IE11

I'm getting this error when viewing my app on IE11 and below. Also the app returns a white page.

To make things even worse, the console is not showing a line number to indicate what/where the problem is located. This makes it very hard to figure out what's wrong. I'm using Webpack 4 and babel-polyfill.

Can anyone point me in the right direction?

Webpack config

const HtmlWebPackPlugin = require("html-webpack-plugin");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const webpack = require('webpack');
const extractSass = new ExtractTextPlugin({
filename: "[name].[hash].css",
disable: process.env.NODE_ENV === "development"
});
module.exports = {
// mode: 'production',
entry: [
    'babel-polyfill',
    './src/index.js'
],
output: {
    publicPath: '/',
    filename: '[name].[hash].js',
},
module: {
    rules: [
        {
            test: /\.(js|jsx)$/,
            exclude: /node_modules/,
            use: {
                loader: "babel-loader"
            }
        },
        {
            test: /\.(png|svg|jpg|gif)$/,
            use: [{
                loader: "file-loader",
                options: {
                    // name: "./images/[name].[hash].[ext]",
                    name: '[path][name]-[hash:8].[ext]'
                },

            }
            ],

        },
        {
            test: /\.html$/,
            use: [
                {
                    loader: "html-loader",
                    options: { minimize: true }
                }
            ]
        },
        {
            test: /\.scss$/,
            use: extractSass.extract({
                use: [
                    {
                        loader: "css-loader",
                        options: {
                            minimize: true,
                            // sourceMap: true
                        }
                    },
                    {
                        loader: "sass-loader"
                    }],
                // use style-loader in development
                fallback: "style-loader"
            })
        },
        {
            test: /\.css$/,
            use: extractSass.extract({
                fallback: "style-loader",
                use: "css-loader"
            })
        }

    ]
},
devServer: {
    historyApiFallback: true,
    contentBase: './dist',
    hot: true,
},
plugins: [
    extractSass,
    // new ExtractTextPlugin('[name].[hash].css'),
    new CopyWebpackPlugin([
        {from:'src/assets/img/favicon.png',to:'src/assets/img'}
    ]),
    new HtmlWebPackPlugin({
        template: "./src/index.html",
        filename: "./index.html"
    }),
    new CleanWebpackPlugin(['dist']),
    new webpack.NamedModulesPlugin(),
    new webpack.HotModuleReplacementPlugin(),

],
optimization: {
    splitChunks: {
        cacheGroups: {
            commons: {
                test: /[\\/]node_modules[\\/]/,
                name: 'vendor',
                chunks: 'all'
            }
        }
    }
},

};

Upvotes: 1

Views: 6789

Answers (1)

RobertMcReed
RobertMcReed

Reputation: 461

I want to reiterate what Jornve realized, as it took me a while to figure this out as well. The query-string package will not work in IE. As it states in the docs,

This module targets Node.js 6 or later and the latest version of Chrome, Firefox, and Safari. If you want support for older browsers, or, if your project is using create-react-app, use version 5: npm install query-string@5.

Removing the dependency and writing my own implementations of the functions fixed the problem for me. I did not try using version 5 of the package, but perhaps that would fix it too.

Upvotes: 9

Related Questions