鍍金池/ 問答/HTML/ react build時報錯:syntax error: Unexpected

react build時報錯:syntax error: Unexpected token (26:6)

使用 npm start命令運行正常,使用npm run build執(zhí)行會報錯如下:

syntax error: C:/Users/wenji/Desktop/my-react-app/src/index.js:
Unexpected token (26:6)
圖片描述
我的index.js:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';
import './App.css';
import Chat from './chat/index';
import Login from './login/index'
import {
  BrowserRouter as Router,
  Route,
  Switch
} from 'react-router-dom';

import { Provider} from 'react-redux'
import store from './store'

// const Home = () => (
//   <div>
//     <h3>Home</h3>
//   </div>
// )
class App extends Component{
  render(){
    console.log(Router)
    return (
      <Router >
      <div style={{height:'100%'}}>
      <Switch>
        <Route exact path="/" component={Login}/>
        <Route path="/chat" component={Chat}/>
        {/* <Route path="/home" component={Home}/> */}
        <Route path="/login" component={Login}/>
      </Switch>
      </div>
    </Router>)
  }
}


ReactDOM.render(
  <Provider store={store}>
  <App />
  </Provider>,
  document.getElementById('root'));
registerServiceWorker();

看起來像是jsx語法沒有被正確的轉化,我的webpack.config.build是這樣的

module: {
    strictExportPresence: true,
    rules: [
    
      {
        test: /\.(js|jsx|mjs)$/,
        enforce: 'pre',
        use: [
          {
            options: {
              formatter: eslintFormatter,
              eslintPath: require.resolve('eslint'),
              
            },
            loader: require.resolve('eslint-loader'),
          },
        ],
        include: paths.appSrc,
      },
      {
    
        oneOf: [
          {
            test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
            loader: require.resolve('url-loader'),
            options: {
              limit: 10000,
              name: 'static/media/[name].[hash:8].[ext]',
            },
          },
          {
            test: /\.(js|jsx|mjs)$/,
            include: paths.appSrc,
            loader: require.resolve('babel-loader'),
            options: {
              
              compact: true,
            },
          },
      
          {
            test: /\.css$/,
            loader: ExtractTextPlugin.extract(
              Object.assign(
                {
                  fallback: {
                    loader: require.resolve('style-loader'),
                    options: {
                      hmr: false,
                    },
                  },
                  use: [
                    {
                      loader: require.resolve('css-loader'),
                      options: {
                        importLoaders: 1,
                        minimize: true,
                        sourceMap: shouldUseSourceMap,
                      },
                    },
                    {
                      loader: require.resolve('postcss-loader'),
                      options: {
                        
                        ident: 'postcss',
                        plugins: () => [
                          require('postcss-flexbugs-fixes'),
                          autoprefixer({
                            browsers: [
                              '>1%',
                              'last 4 versions',
                              'Firefox ESR',
                              'not ie < 9', // React doesn't support IE8 anyway
                            ],
                            flexbox: 'no-2009',
                          }),
                        ],
                      },
                    },
                  ],
                },
                extractTextPluginOptions
              )
            ),
            // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.
          },
      
          {
            loader: require.resolve('file-loader'),
            
            exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/],
            options: {
              name: 'static/media/[name].[hash:8].[ext]',
            },
          },
          
        ],
      },

請為我指點迷津

回答
編輯回答
野橘

應該把這個presets加到.babelrc文件中。

2018年6月8日 02:17
編輯回答
歆久

沒遇到過不過我建議換成babel

2017年7月2日 13:19
編輯回答
落殤
 {
            test: /\.(js|jsx|mjs)$/,
            include: paths.appSrc,
            loader: require.resolve('babel-loader'),
            options: {
              compact: true,
              presets: ['es2015', 'react']
            },

自己解決了,一個人干真難受

2018年5月15日 18:29