You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用webpack-devserver时ReactJS编译失败:Unexpected token错误

解决Webpack编译React时的Unexpected Token错误

我帮你排查了一下代码里的问题,这个Unexpected Token错误主要是因为Webpack+Babel的配置存在语法错误,再加上代码里的小疏忽导致JSX语法没被正确转译,咱们一步步来修复:

1. 修复webpack.config.js的语法错误

你的webpack配置文件里有两处关键语法问题:

  • module.rules 应该是一个数组,你的配置里结构混乱,没有正确用数组包裹规则对象
  • Babel的presets配置缺少外层数组包裹,语法不合法

修正后的webpack.config.js如下:

const webpack = require('webpack');

module.exports = {
  devtool: 'source-map',
  entry: {
    app: __dirname + '/src/App.jsx'
  },
  output: {
    path: __dirname + '/dist',
    filename: 'app.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.jsx$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader',
            options: {
              presets: ["es2015", "stage-0", "react"]
            }
          }
        ]
      },
      {
        test: /\.css$/,
        use: [
          { loader: 'style-loader' },
          { loader: 'css-loader', options: { modules: true } }
        ]
      }
    ]
  }
};

2. 修复App.jsx的ReactDOM引入问题

你的代码最后调用了ReactDOM.render(),但没有引入ReactDOM模块,这会导致运行时错误,同时也可能影响Babel的转译判断。在App.jsx顶部添加引入:

import React, { Component } from 'react';
import ReactDOM from 'react-dom'; // 新增这一行
import './App.css';
import { BrowserRouter as Router, Route, Link} from 'react-router-dom';

class App extends Component {
  render() {
    return (
      <Router>
        <div className="App">
          <Route path='/' render={ ()=> { return (<h1> Welcome Home </h1> ) ; } }/>
        </div>
      </Router>
    );
  }
}

ReactDOM.render(<App />, document.getElementById('root'));

3. 规范package.json的依赖分类(可选但推荐)

react和react-dom是生产环境必需的依赖,应该从devDependencies移到dependencies中:

{
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router-dom": "^4.2.2"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-es2015-node4": "^2.1.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "babel-register": "^6.26.0"
  }
}

做完这些修改后,重新启动webpack-dev-server,应该就能正常编译了。核心问题是Webpack配置里的语法错误导致Babel没有正确处理JSX语法,从而抛出Unexpected Token错误。


内容的提问来源于stack exchange,提问作者HoCo_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:42:02