首页 > 解决方案 > BABEL - 错误 - SyntaxError: Unexpected token

问题描述

我徒劳地试图调查我的 babel 配置中显示的错误。到目前为止尝试了这个版本的 Babel 之后,我总是收到相同的错误消息。

包.json

{
      "name": "react-starter",
      "version": "0.1.0",
      "description": "stack",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "npm run start:dev",
        "build:server": "mkdir -p dist && webpack --config ./build/webpack.config.server.prod.js",
        "build:client": "mkdir -p dist && webpack --config ./build/webpack.config.client.prod.js --display-chunks --json > ./dist/stats.webpack.json",
        "start:dev": "node ./build/cli-tools.js --clear serve && webpack-dev-server --config ./build/webpack.config.client.dev.js",
        "start:prod": "node ./build/cli-tools.js --clear dist --create dist && npm run build:client && npm run build:server && node ./dist/server.js",
        "build:prod": "node ./build/cli-tools.js --clear dist --create dist && npm run build:client && npm run build:server"
      },
      "author": "stack",
      "license": "true",
      "devDependencies": {
        "autoprefixer": "^9.1.5",
        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.3",
        "babel-eslint": "^8.2.6",
        "babel-loader": "^7.1.5",
        "babel-plugin-universal-import": "^3.0.2",
        "babel-polyfill": "^6.26.0",
        "babel-preset-env": "^1.7.0",
        "babel-preset-react": "^6.24.1",
        "babel-preset-es2015": "^6.6.0",
        "babel-preset-stage-2": "^6.24.1",
        "commander": "^2.20.3",
        "css-loader": "^1.0.0",
        "eslint": "^5.5.0",
        "eslint-config-airbnb": "^17.0.0",
        "eslint-import-resolver-alias": "^1.1.0",
        "eslint-plugin-import": "^2.13.0",
        "eslint-plugin-jsx-a11y": "^6.1.0",
        "eslint-plugin-react": "^7.10.0",
        "extract-css-chunks-webpack-plugin": "^3.0.6",
        "file-loader": "^2.0.0",
        "html-webpack-plugin": "^3.2.0",
        "mkdirp": "^0.5.5",
        "node-sass": "^4.9.2",
        "optimize-css-assets-webpack-plugin": "^5.0.1",
        "postcss-loader": "^3.0.0",
        "raw-loader": "^0.5.1",
        "rimraf": "^2.7.1",
        "sass-loader": "^7.0.3",
        "style-loader": "^0.23.0",
        "terser-webpack-plugin": "^1.1.0",
        "webpack": "^4.46.0",
        "webpack-assets-manifest": "^3.0.1",
        "webpack-cli": "^3.3.12",
        "webpack-dev-server": "^3.1.8",
        "webpack-node-externals": "^1.7.2"
      },
      "dependencies": {
        "@owczar/dashboard-style--spin": "^0.1.14",
        "bootstrap": "^4.1.1",
        "express": "^4.16.3",
        "faker": "^4.1.0",
        "font-awesome": "^4.7.0",
        "fs-extra": "^7.0.0",
        "holderjs": "^2.9.4",
        "lodash": "^4.17.11",
        "prop-types": "^15.6.2",
        "query-string": "^6.1.0",
        "react": "^16.5.1",
        "react-dom": "^16.5.1",
        "react-helmet": "^5.2.0",
        "react-hot-loader": "^4.3.3",
        "react-popper": "^1.3.2",
        "react-responsive": "^5.0.0",
        "react-router": "^4.3.1",
        "react-router-dom": "^4.3.1",
        "react-universal-component": "^3.0.3",
        "reactstrap": "^6.3.0",
        "recharts": "^1.2.0",
        "uuid": "^3.3.2",
        "webpack-flush-chunks": "^2.0.1"
      }
    }

webpack.config.js

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');

var config = require('./../config');

module.exports = {
    name: 'client',
    devtool: 'cheap-eval-source-map',
    target: 'web',
    mode: 'development',
    entry: {
        app: [path.join(config.srcDir, 'index.js')]
    },
    output: {
        filename: '[name].bundle.js',
        chunkFilename: '[name].chunk.js',
        path: config.distDir,
        publicPath: '/'
    },
    resolve: {
        modules: [
            'node_modules',
            config.srcDir
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: config.srcHtmlLayout,
            inject: false,
            chunksSortMode: 'none'
        }),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify('development')
        }),
        new webpack.NamedModulesPlugin(),
        new webpack.HotModuleReplacementPlugin()
    ],
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: [
                      {
                        loader: 'babel-loader',
                        options: {
                          presets: ['react']
                        }
                      }
                    ]
            },
            {
                test: /\.jsx$/,
                exclude: /node_modules/,
                use: [
                      {
                        loader: 'babel-loader',
                        options: {
                          presets: ['react']
                        }
                      }
                    ]
            },
            // Modular Styles
            {
                test: /\.css$/,
                use: [
                    { loader: 'style-loader' },
                    { 
                        loader: 'css-loader',
                        options: {
                            modules: true,
                            importLoaders: 1,
                            localIdentName: '[name]_[local]_[hash:base64:5]'
                        }
                    },
                    { loader: 'postcss-loader' }
                ],
                exclude: [path.resolve(config.srcDir, 'styles')],
                include: [config.srcDir]
            },
            {
                test: /\.scss$/,
                use: [
                    { loader: 'style-loader' },
                    {
                        loader: 'css-loader',
                        options: {
                            modules: true,
                            importLoaders: 1,
                            localIdentName: '[name]_[local]_[hash:base64:5]'
                        }
                    },
                    { loader: 'postcss-loader' },
                    {
                        loader: 'sass-loader',
                        options: {
                            includePaths: config.scssIncludes
                        }
                    }
                ],
                exclude: [path.resolve(config.srcDir, 'styles')],
                include: [config.srcDir]
            },
            // Global Styles
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader', 'postcss-loader'],
                include: [path.resolve(config.srcDir, 'styles')]
            },
            {
                test: /\.scss$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'postcss-loader',
                    {
                        loader: 'sass-loader',
                        options: {
                            includePaths: config.scssIncludes
                        }
                    }
                ],
                include: [path.resolve(config.srcDir, 'styles')]
            },
            // Fonts
            {
                test: /\.(ttf|eot|woff|woff2)$/,
                loader: "file-loader",
                options: {
                    name: "fonts/[name].[ext]",
                }
            },
            // Files
            {
                test: /\.(jpg|jpeg|png|gif|svg)$/,
                loader: "file-loader",
                options: {
                    name: "static/[name].[ext]",
                }
            }
        ]
    },
    devServer: {
        hot: true,
        contentBase: config.serveDir,
        compress: true,
        historyApiFallback: {
            index: '/'
        },
        host: '0.0.0.0',
        port: 4100
    }
}

Fehlermeldung:

ERROR in ./app/components/devacord/accord.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (8:21)

   6 | 
   7 | export class Accord extends React.Component {
>  8 |     static propTypes = {
     |                      ^
   9 |         initialOpen: PropTypes.bool,
  10 |         onToggle: PropTypes.func,
  11 |         open: PropTypes.bool,

我已经按照类似问题的先前说明无济于事,因此需要您的帮助。

标签: node.jsnpmbabel-loader

解决方案


推荐阅读