为啥 webpack 构建后我的 react-routing 不起作用?

Posted

技术标签:

【中文标题】为啥 webpack 构建后我的 react-routing 不起作用?【英文标题】:Why doesn't my react-routing work after webpack building?为什么 webpack 构建后我的 react-routing 不起作用? 【发布时间】:2018-08-10 16:09:08 【问题描述】:

我做了一个简单的反应路由器。当我开发它时,我使用了npm start 命令来启动一个开发服务器。一切正常。但是当我使用命令 npm run build(使用 webpack)构建我的应用程序时,启动了一个简单的 http 服务器并转到 /add_project 时出现 404 错误。而且我不知道为什么会这样。请帮忙!

代码如下:

App.js

imports...

render() 
    return (
        <Switch>
            <div>
                <Route exact path='/' component=Projects/>
                <Route exact path='/add_project' component=AddProject />
            </div>
        </Switch>
    );

index.js

imports...

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

webpack.config.js

const htmlPlugin = require('html-webpack-plugin')

module.exports = 
  entry: './src',
  output: 
    filename: 'app.js',
    path: __dirname + '/dist'
  ,
  devtool: 'source-map',
  module: 
    loaders: [
      test: /\.js$/,
      exclude: /node_modules/,
      loader: 'babel-loader'
    ]
  ,
  plugins: [
    new HtmlPlugin(
      template: 'public/index.html'
    )
  ]

更新:

package.json


  "name": "Test",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": 
    "build": "webpack -p --progress --config webpack.config.js",
    "dev-build": "webpack --progress -d --config webpack.config.js",
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch": "webpack --progress -d --config webpack.config.js --watch",
    "start": "react-scripts start"
  ,
  "license": "MIT",
  "babel": 
    "presets": [
      "es2015",
      "react"
    ]
  ,
  "devDependencies": 
    "babel-core": "^6.25.0",
    "babel-loader": "^7.0.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "bootstrap": "^4.0.0",
    "css-loader": "^0.28.4",
    "eslint": "^4.18.1",
    "eslint-plugin-react": "^7.7.0",
    "extract-text-webpack-plugin": "^2.1.2",
    "file-loader": "^0.11.2",
    "jquery": "^3.2.1",
    "react": "^15.6.1",
    "react-bootstrap": "^0.31.0",
    "react-dom": "^15.6.1",
    "react-router-dom": "^4.2.2",
    "style-loader": "^0.18.2",
    "webpack": "^3.11.0"
  

UPD2:

AddProject.js

import React,  Component  from 'react';

class AddProject extends Component 
  constructor()
  
    super();
  

  render() 
    return (
      <form className="form-horizontal">
        <input type="text" ref="title" className="input" />
        <input type="text" ref=""/>
      </form>
    );
  


export default AddProject;

【问题讨论】:

能否请您发布您的package.json,以便我们查看您尝试运行的脚本 已添加。你现在可以看到 可以成功进入根路径(/)并显示正确的页面? 是的。但是当我转到任何其他页面并重新加载它时,会显示 404 错误 能否请您发布您的AddProject 组件 【参考方案1】:

您已经将精确路径与“/”匹配,然后再次将其与 /add_project 路由匹配。尝试改变

     <Route exact path='/add_project' component=
       AddProject />

      <Route path='/add_project' component=
       AddProject />

如果在父路由上设置了精确,则子路由不匹配,但会按预期呈现 404

【讨论】:

没有。它没有解决问题。当我转到任何其他页面时出现 404 错误。

以上是关于为啥 webpack 构建后我的 react-routing 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥升级到 ios-sdk8 后我的 UIImageView 不会拉伸?

为啥订阅完成后我的数据会消失?

我的启动画面后我的程序不断崩溃。为啥?

纱线构建。错误 - 无效的选项对象

为啥 Flutter iOS 构建失败?

为啥使用 UISearchResultsUpdating 取消按钮后我的 tableview 是空白的?