uni-app项目分包后子包中静态资源丢失
前情
uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。
坑位
随着项目越做越大,发现小程序的包体积已经超过了小程序单包最高2M的限制,于是对项目进行了分包处理,在分包过种中真正占项目体积的其实是静态资源文件,所以在分包的时候自然也会把子包对应的静态资源文件放到子包中,发现子包无法访问到子包自己的静态资源文件。
Why?
对于这个问题当时是一脸蒙,于是我通过查看uppackage/dist/dev/mp-weixin最终输出文件,发现子包的静态文件并没有打包进来,应该是hbuilderx忽略了子包下的非页面目录。在论坛了解到,开启分包优化是会把子包的static打包过去的,但是分包优化又只支持mp-weixin、mp-qq、mp-baidu、mp-toutiao、mp-kuaishou几个平台。

解决方案
方案1(推荐):
其实uniapp官方应该是做了特殊处理,只要你子包的静态资源放到static下,我一开始把静态文件都放到assets下了导致文件丢失,你无需开启什么分包优化也是可以自动打包过去的,至少目前我测了微信,支付宝,京东都是没有问题
方案2:
修改vue.config.js配置,通过copy-webpack-plugin插件让webpack拷贝到指定子包里来解决资源丢失的问题。
示例代码如下(此处假设我的子包目录为packageOrderForm)
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
...
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, '/packageOrderForm/assets'),
to: path.join(__dirname+'/unpackage/', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, '/packageOrderForm/assets')
}
])
]
},
...
}
注:因为uniapp vue2项目使用的webpack版本较低,你不能直接npm i copy-webpack-plugin安装,会不兼容,你可以通过npm i copy-webpack-plugin@5来安装5+版本的插件来避开这个兼容问题。
uni-app项目分包后子包中静态资源丢失的更多相关文章
- web项目打包后在代码中获取资源文件
在web项目里面,有时代码里面需要引用一些自定义的配置文件,这些配置文件如果放在类路径下,项目经过打包后使用的相对路径也会发生变化,所以以下给出了三种解决方案. 一.properties下配置 在类路 ...
- Jar中的Java程序如何读取Jar包中的资源文件
Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/ //这个目录是idea中项目的属性文件夹 |-s ...
- 读取Jar包中的资源问题探究
最近在写一个可执行jar的程序,程序中包含了2个资源包,一个是images,一个是files.问题来了,在Eclipse里开发的时候,当用File类来获取files下面的文件时,没有任何问题.但是当程 ...
- java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- 深入jar包:从jar包中读取资源文件getResourceAsStream
一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...
- [Java基础] 深入jar包:从jar包中读取资源文件
转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...
- 深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
- 【解惑】深入jar包:从jar包中读取资源文件
[解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...
随机推荐
- RSA 对称加密,对称解密----公钥私钥加密解密过程
RSA 对称加密,对称解密----公钥私钥加密解密过程(Java) 公司说不能传铭文密码,所以只能加密,再解密:麻烦事,其实这在需求文档没有,开发时间点也没有,浪费了了一上午的时间,还占用了公司给的开 ...
- USB设备类型代码、详细说明、查询方式
以下是相关类型的详细说明: 地址:https://www.usb.org/documents 搜索device class 以下是USB所有支持的设备类型代码 地址:http://www.usb.or ...
- Linux调度器:进程优先级
一.前言 本文主要描述的是进程优先级这个概念.从用户空间来看,进程优先级就是nice value和scheduling priority,对应到内核,有静态优先级.realtime优先级.归一化优先级 ...
- C++中左值和右值的区别
#include <iostream> using namespace std; // 什么是左值和右值 const 可以修饰左值和右值z // 左值:有地址的变量 // 右值:没有地址的 ...
- 使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
一.项目简介 使用过ABP框架的童鞋应该知道它也自带了一款免费的Blazor UI主题,它的页面是长这样的: 个人感觉不太美观,于是网上搜了很多Blazor开源组件库,发现有一款样式非常不错的组件库, ...
- CentOS 7环境下DM8数据库的安装与配置
一.环境准备 首先,确保你的系统已经安装了CentOS 7,并且具有足够的磁盘空间和内存来支持DM8数据库的运行.此外,你还需要具备管理员权限,以便进行后续的安装和配置操作. 二.下载DM8安装包 访 ...
- Nuxt.js 应用中的 nitro:build:public-assets 事件钩子详解
title: Nuxt.js 应用中的 nitro:build:public-assets 事件钩子详解 date: 2024/11/5 updated: 2024/11/5 author: cmdr ...
- 3.15 Linux复制文件和目录(cp命令)
cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能. cp 命令的基本格式如下: [root@localhost ~]# cp [选项] ...
- docker连不上私有仓库Harbor
解决办法: # 配置多个host(配置本地域名映射) [root@vm10-11-0-38 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.local ...
- 精选2款C#/.NET开源且功能强大的网络通信框架
前言 今天大姚给分享2个C#/.NET开源且功能强大的网络通信框架,希望可以帮助到有需要的同学. NetCoreServer NetCoreServer是一个.NET开源.免费(MIT License ...