在 UniApp Vue3 小程序中,分包页面的 JS 被错误打包进主包 vendor 通常由以下原因引起:
主要原因
1. 依赖引用问题
- 分包页面引用了主包依赖
- 公共组件或工具函数被错误引用
2. 配置问题
分包配置不正确:
// pages.json
{
"subPackages": [{
"root": "subpackage",
"pages": [{
"path": "index",
"style": { "navigationBarTitleText": "分包页面" }
}]
}]
}
3. 代码分割配置
Vue3 的代码分割可能未正确配置
解决方案
1. 检查依赖引用
确保分包页面只引用分包内的资源:
// 分包页面中避免这样引用
import { utils } from '@/common/utils' // 可能被打入主包
// 改为分包内相对路径
import { utils } from '../../common/utils'
2. 优化分包配置
// pages.json
{
"subPackages": [{
"root": "subpackageA",
"pages": [
// 分包页面
]
}],
"preloadRule": {
"subpackageA/index": {
"network": "all",
"packages": ["subpackageA"]
}
}
}
3. 配置优化
在 vue.config.js
中:
module.exports = {
configureWebpack: {
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendor',
chunks: 'initial',
enforce: true
}
}
}
}
}
}
4. 构建分析
使用构建分析工具检查打包结果:
# 生成分析报告
npm run build:mp-weixin --report
检查要点
- 确认所有分包页面都在
subPackages
中声明
- 避免跨分包引用
- 检查第三方库是否被正确分割
- 验证公共组件的引用路径
通过以上调整,通常可以解决分包 JS 被打入主包 vendor 的问题。