当前位置: 首页 > news >正文

vue-cli3+ 打包至非根目录静态资源(图片,字体文件)路径加载错误,导致不显示,丢失

缘由

当开发vue项目时,ele字体图标显示无任何问题,然而当项目打包部署上线时,图片,字体文件等静态资源就丢失了,通过分析是因为项目打包时是非根目录,通过publicPath进行了配置,静态资源没有匹配到publicPath,因此打包出来的路径错误,导致页面不显示资源

分析

由于是打包至非根目录下,我们需要对webpack中的publicPath进行配置,同时记得修改router.js中的base地址

// 打包至非根目录下
// vue.config.js
publicPath: "/tpls/vue/"
// router/index.js
base: process.env.BASE_URL
  • 本地开发时ele字体图标载入正常:
    在这里插入图片描述
  • 打包部署上线后ele字体图标丢失:

在这里插入图片描述

  • 其他js.css文件的载入:

在这里插入图片描述

  • 实际应加载的路径为:
http://xxxxx.cn/tpls/vue/fonts/element-icons.535877f5.woff

我们发现除了静态资源外,js,css文件均正常载入,我们所要实现的就是修改webpack打包配置指定其打包路径

实现

// vue.config.js
const _publicPath = '/tpls/vue/'
module.exports = {
  publicPath: _publicPath,	 // 部署应用包时的基本 URL
  chainWebpack: config => {
  		// 匹配相应的文件进行配置
        config.module
            .rule('images')
            .use('url-loader')
            .loader('url-loader')
            .tap(options => {
                options['limit'] = 4096
                options['publicPath'] = _publicPath		// **重点:添加路径
                return options;
            })
        config.module
            .rule('media')
            .use('url-loader')
            .loader('url-loader')
            .tap(options => {
                options['limit'] = 10000
                options['publicPath'] = _publicPath		// **重点:添加路径
                return options;
            })
        config.module
            .rule('fonts')
            .use('url-loader')
            .loader('url-loader')
            .tap(options => {
                options['limit'] = 4096
                options['publicPath'] = _publicPath		// **重点:添加路径
                return options;
            })
    },
}    

相关文章:

  • 讲座:Influence maximization on big social graph
  • Vue3中组件的挂载及调用
  • HDFS 核心原理
  • 正则表达式学习1
  • 第一章:TypeScript
  • 进制准换 base_convert()
  • yii框架rules规则
  • PWA桌面应用开发
  • php面试题 汇集2
  • 从底层了解Vue3
  • 六大设计原则(读书笔记)
  • BZOJ1588 营业额统计 (Splay)
  • 小团队的PM和开发方法
  • 第二个商业设想
  • 如何让.net 2003中的Panel正常实现Dock
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • maya建模与骨骼动画快速实现人工鱼
  • mockjs让前端开发独立于后端
  • mysql外键的使用
  • Python学习之路16-使用API
  • Redux 中间件分析
  • RxJS: 简单入门
  • sublime配置文件
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 排序(1):冒泡排序
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 区块链将重新定义世界
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 设计模式(12)迭代器模式(讲解+应用)
  • 线性表及其算法(java实现)
  • 赢得Docker挑战最佳实践
  • 终端用户监控:真实用户监控还是模拟监控?
  • hi-nginx-1.3.4编译安装
  • Mac 上flink的安装与启动
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (12)目标检测_SSD基于pytorch搭建代码
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第二周)效能测试
  • (动态规划)5. 最长回文子串 java解决
  • (独孤九剑)--文件系统
  • (二)换源+apt-get基础配置+搜狗拼音
  • (三)mysql_MYSQL(三)
  • (四)模仿学习-完成后台管理页面查询
  • (新)网络工程师考点串讲与真题详解
  • (学习日记)2024.01.09
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Google的Objective-C编码规范
  • (转)程序员技术练级攻略
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes