【问题标题】:React-Routing basic example path not workingReact-Routing 基本示例路径不起作用
【发布时间】:2017-10-18 05:21:07
【问题描述】:

尝试从here运行基本示例

我有 Yarn+Webpack2+Babel es2015

这是我的切入点:

import React from 'react'
import {
  BrowserRouter as Router,
  Route,
  Link
} from 'react-router-dom'

     const BasicExample = () => (
        <Router>
            <div>
                <ul>
                    <li><Link to="/">Home</Link></li>
                    <li><Link to="/about">About</Link></li>
                </ul>

                <hr/>

                <Route exact path="/" component={Home}/>
                <Route path="/about" component={About}/>
            </div>
        </Router>
    );

    const Home = () => (
        <div>
            <h2>Home</h2>
        </div>
    );

    const About = () => (
        <div>
            <h2>About</h2>
        </div>
    );

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

http://localhost:8080 的项目开始良好,链接工作正常,从 Home 和 About 组件呈现内容。

但是当我尝试输入 url http://localhost:8080/about - 控制台显示我

GET http://localhost:8080/about 404(未找到)

我在 Stack 上发现了许多几乎相同的问题,但没有找到适合我的解决方案。
react-router 拦截传入的 url 到底是什么?
由于我的 Yarn\Webpack 设置,这可能不起作用?

____________UPDATE_1 Webpack 配置

const path = require('path');
let webpack = require("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
    template: path.join(__dirname, 'index.html'),
    filename: 'index.html',
    inject: 'body'
});

module.exports = {
    /*devServer: {
        host: "DESKTOP-A5FTMD8", // Can change port
        port: 8080
    },*/
    entry: path.join(__dirname, 'index.jsx'),
    output: {
        filename: 'bundle.js',
        path: path.join(__dirname, 'dist')
    },
    module: {
        loaders: [
            {test: /\.(less|css)$/, loader: 'style-loader!css-loader!less-loader'},
            {test: /\.(xml)$/, loader: 'xml-loader'},
            {test: /\.(svg|png|jpg|jpeg)$/, loader: 'file-loader'},
            {
                test: /\.(js|jsx|es6)$/,
                exclude: /node_modules/,
                loader: 'react-hot-loader!babel-loader?presets[]=react,presets[]=es2015'
            },
        ]
    },
    resolve: {
        extensions: ['.js', '.jsx', '.es6']
    },
    plugins: [
        HtmlWebpackPluginConfig
    ]
};

【问题讨论】:

  • 你的webpack-dev-server配置有问题。
  • npm install react-router-dom / yarn add react-router-dom了吗?还可以在这里查看我的基本示例:stackoverflow.com/documentation/react-router/5546/…
  • @toomuchdesign 添加了我的 webpack 配置
  • @SventenHaaf,通过您的示例从启动应用程序创建。结果是一样的。可能 toouchdesign 关于我的 webpack 配置。
  • 我想是的。很抱歉,我现在无法帮助您,但如果您找到了解决方案,请告诉我。

标签: reactjs webpack react-router


【解决方案1】:

这个方案在 webpack config 中解决的问题:

devServer: {
    historyApiFallback: true <-- this needs to be set to true
}

This answer

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 2015-09-22
    • 2018-06-03
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多