IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react项目打包后,浏览器直接打开dist/index.html页面出现空白 -> 正文阅读

[JavaScript知识库]react项目打包后,浏览器直接打开dist/index.html页面出现空白

问题解决

下面 umi 的两个配置解决了问题。

{
	publicPath: './',
    history: {
        type: 'hash',
    }
}

问题描述

使用umi + react + ant design 搭建React web项目,使用的config.ts 配置如下:

import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings';
import proxy from './proxy';
import routes from './routes';
import theme from './theme';
import openAPISettings from './openapi.config';

const { REACT_APP_ENV } = process.env;

export default defineConfig({
    hash: true,
    antd: {},
    dva: {
        hmr: true,
    },
    layout: {
        locale: true,
        siderWidth: 208,
        ...defaultSettings,
    },
    locale: {
        default: 'zh-CN',
        antd: true,
        baseNavigator: true,
    },
    dynamicImport: {
        loading: '@ant-design/pro-layout/es/PageLoading',
    },
    targets: {
        ie: 11,
    },
    routes: routes,
    theme: theme,
    esbuild: {},
    title: false,
    ignoreMomentLocale: true,
    proxy: proxy[REACT_APP_ENV || 'dev'],
    manifest: {
        basePath: '/',
    },
    fastRefresh: {},
    openAPI: openAPISettings,
    nodeModulesTransform: {
        type: 'none',
    },
    mfsu: {},
    webpack5: {},
});

此种配置下执行yarn build 打包,完成之后直接浏览器打开dist/index.html 页面,页面一片空白,打开Network 面板,发现很多报错,都是资源加载错误,如下,发现和正常请求的资源路径不一样,路径使用了绝对路径。
在这里插入图片描述
此问题是由于默认的config.tspublicPath:'/', 故而打包的时候所有写绝对路径开头的都直接, 所以添加publicPath: './', 此时文件中引入资源使用‘/xx’ 都被正确解析成了‘./xx’

不过umi 文档说此配置修改成./ 有一定的限制,本人没有实际尝试过,描述如下:
在这里插入图片描述
修改配置后,重新执行yarn build, 完成之后直接浏览器打开dist/index.html 页面,页面一片空白,但是所有资源加载都显示正常,百度了一番,发现是使用了默认history 配置的问题,默认config.tshistory: {type: browser}, 将其改成 history: {type: hash}

修改配置后,重新执行yarn build, 完成之后直接浏览器打开dist/index.html 页面,正常工作,如期望一样可以成功跳转到login 页面,至此问题解决。

待解决

对于less 文件中的background-image: url('/xxx') 如果修改成相对路径,则会报错 module not found , 此问题需要再看看。

思考

直接访问打包后的dist/index.html ,和将dist/ 目录下的所有资源放到反向代理nginx 或者其他webserver 上,静态文件没有本之区别,应为都可以正常访问。唯一的区别应该就是rest请求,nginx可以配置转发,可以实现反向代理,而静态文件里面没有控制转发的逻辑,所以都是请求失败。

如果有其他大大们有不同意见或者其他思考,欢迎分享留言,共同提高。

参考

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:04:44  更:2022-03-11 22:05:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:49:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码