• vite打包react项目访问报错,react路由配置


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 想要个猫咪 2024-05-20 17:55 采纳率: 0% 浏览 9 首页/ 前端 / vite打包react项目访问报错,react路由配置 react.jsreactjs前端框架 使用vite5.2.0+react18.2.0搭建项目,打包之后放到服务器上,访问页面为404,请问各位要进行什么配置呀?还有想请教一下 ,路由这样配置可以吗 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    3条回答 默认 最新

    • 阿里嘎多学长 2024-05-20 17:56
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      【您想要解决的问题】: 您提问的目的是解决在使用Vite 5.2.0和React 18.2.0搭建的项目在服务器上部署后,访问页面时出现404错误的问题,并咨询路由配置是否正确。

      【图片内容】: 第一张图片显示的是React项目的路由配置代码,其中包含了createBrowserRouter函数的使用,以及几个路由路径和对应的组件。 第二张图片显示的是访问某个路径时返回的404错误页面,提示“Unexpected Application Error!”。

      【问题出现原因】:

      1. 服务器可能没有正确配置以支持React单页面应用(SPA)的路由。通常,SPA需要服务器配置以重定向所有非静态资源请求到入口文件(如index.html)。
      2. 图片中的路由配置可能存在问题。例如,路由的路径可能设置不正确,或者组件标签可能没有正确闭合。
      3. Vite打包后的静态资源可能没有正确放置在服务器的根目录下。

      【问题解决方案】:

      1. 确保服务器配置正确,支持SPA路由。例如,如果您使用的是Node.js服务器,可以使用express中间件来重定向所有非静态资源请求到index.html
      2. 检查路由配置代码,确保路径和组件标签正确无误。
      3. 确认Vite打包后的静态资源是否放置在服务器的根目录下。

      【提供代码】: 以下是修改后的路由配置代码示例,以及服务器配置示例:

      // 路由配置代码示例
      import { createBrowserRouter, RouterProvider } from '@remix-run/react';
      import { App } from './App';
      import { Order } from './Order';
      import { SiteOrder } from './SiteOrder';
      import { PutStore } from './PutStore';
      import { Login } from './Login';
      
      const router = createBrowserRouter({
        routes: [
          {
            path: '/',
            element: ,
          },
          {
            path: '/order',
            element: ,
          },
          {
            path: '/siteorder',
            element: ,
          },
          {
            path: '/putorder',
            element: ,
          },
          {
            path: '/login',
            element: ,
          },
        ],
      });
      
      // 服务器配置示例(使用Express)
      const express = require('express');
      const path = require('path');
      const app = express();
      
      app.use(express.static(path.join(__dirname, 'dist')));
      
      app.get('*', (req, res) => {
        res.sendFile(path.join(__dirname, 'dist', 'index.html'));
      });
      
      app.listen(3000, () => {
        console.log('Server is running on http://localhost:3000');
      });
      

      【代码运行方式】:

      1. 确保您的服务器环境已安装Node.js和Express。
      2. 将上述服务器配置代码保存为server.js
      3. 在项目根目录下运行node server.js启动服务器。

      【代码预期运行结果】:

      • 当访问服务器上的任何路径时,服务器将返回index.html页面,React Router将根据配置的路由来渲染对应的组件。

      【推荐相关链接】:

      1. Vite官方文档
      2. React Router官方文档
      3. Express.js官方文档
      4. SPA路由配置教程

      展开全部

      评论 编辑记录
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-20 17:56
      关注

      引自免费微信小程序:皆我百晓生

      根据您提供的信息,看起来您的Vite + React 项目在部署后遇到了404错误。这通常是因为服务器没有正确配置来处理单页应用(SPA)的路由。以下是您可以尝试的一些解决步骤:

      首先,在Vite项目的根目录创建一个名为vite.config.js的文件(如果尚未存在),然后添加以下配置来启用历史模式(history mode):

      // vite.config.js
      import { defineConfig } from 'vite';
      import react from '@vitejs/plugin-react';
      
      export default defineConfig({
        plugins: [react()],
        build: {
          emptyOutDir: true,
          outDir: 'dist',
          rollupOptions: {
            input: 'src/main.js',
          },
        },
        server: {
          history: {
            fallback: true,
          },
        },
      });
      

      接下来,确保您的package.json中的脚本配置如下:

      // package.json
      {
        "scripts": {
          "dev": "vite",
          "build": "vite build",
          "serve": "vite preview"
        }
      }
      

      然后,您需要将路由部分从React组件移动到单独的JS文件中,例如routes.js,以便于更好地管理它们:

      // routes.js
      import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
      import App from './App';
      import Order from './Order';
      import SiteOrder from './SiteOrder';
      import PutOrder from './PutOrder';
      import Login from './Login';
      
      function RouterComponent() {
        return (
          
            
              }>
                } />
                } />
                } />
                } />
              
            
          
        );
      }
      
      export default RouterComponent;
      

      App.js中,导入并渲染这个新创建的RouterComponent

      // App.js
      import React from 'react';
      import RouterComponent from './routes';
      
      function App() {
        return (
          
      ); } export default App;

      最后,确认您的服务器端已设置正确的静态文件服务,并且指向dist目录。对于Nginx,您可以在站点配置文件中添加类似这样的规则:

      location / {
        try_files $uri $uri/ /index.html;
      }
      

      如果您使用的是Apache,可以添加类似的.htaccess文件:

      
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.html$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.html [L]
      
      

      完成上述更改后,运行npm run build构建项目,然后将dist目录上传到服务器。这样应该能解决您的404错误,并使路由正常工作。

      如果问题仍然存在,请检查服务器日志,看看是否有其他错误提示,或者提供更详细的错误信息,我会继续帮助您排查。

      展开全部

      评论 编辑记录
    • Kwan的解忧杂货铺 2024-05-20 17:56
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      针对你的问题,可能是以下原因导致的:

      1.前端路由没有正确配置。在打包后,访问页面为404,可能是因为前端路由没有正确配置,导致无法找到对应的页面。所以,需要对前端路由进行正确的配置。 2.服务器配置问题。服务器可能没有正确配置,导致无法找到相应的页面,所以需要对服务器进行正确的配置。

      针对以上的问题,可以采取以下措施:

      1.前端路由配置问题。你需要保证你的路由配置正确,可以针对你的代码进行修改:

      import { BrowserRouter, Switch, Route } from "react-router-dom";
      import App from "./components/App";
      import Order from "./components/Order";
      import SiteOrder from "./components/SiteOrder";
      import Putstore from "./components/Putstore";
      import Login from "./components/Login";
      
      function Router() {
        return (
          
            
              
              
              
              
              
            
          
        );
      }
      export default Router;
      

      在路由配置中,我们使用BrowserRouter, Switch和Route组件,来完成路由的配置。这样就可以在打包后访问到对应的页面。

      2.服务器配置问题。如果前端路由配置正确,但是还是无法访问到服务器上的页面,那么可能是服务器配置问题。可以通过以下步骤解决:

      • 确认服务器是否正常运行,并且端口号是否正确。
      • 确认服务器上是否存在对应的页面。在前端路由配置之后,需要在服务器上部署对应的页面,在确保部署完成之后,才能正常访问对应的页面。
      • 确认服务器是否正确配置了反向代理路由。在部署后端服务时,需要配置反向代理路由,来转发前端请求,以便前端可以访问到对应的页面。因此,需要确认服务器是否正确配置了反向代理路由。

      通过以上的措施,可以解决前端打包后访问404的问题。

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    应用在液晶背光领域中的环境光传感芯片
    java毕业设计产品销售管理系统Mybatis+系统+数据库+调试部署
    昨天阅读量创记录3万
    怎样在电脑上设置路由器的WiFi密码
    The Multiversity 的 “非常重要的生命体” NFT 推出
    Linux用户管理
    机器视觉学习(三)—— 保存视频流
    Linux内存管理(二十四):slub 分配器之kmem_cache_free
    【微信小程序】实现手机全屏滚动字幕
    【Linux安装软件命令及vim、gcc使用说明】
  • 原文地址:https://ask.csdn.net/questions/8106484