看bug描述
- 发布:2026-03-17 15:27
- 更新:2026-03-17 15:29
- 阅读:62
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 15.3.2
HBuilderX类型: 正式
HBuilderX版本号: 5.03
第三方开发者工具版本号: 2.01.2510280
基础库版本号: 3.14.3
项目创建方式: HBuilderX
操作步骤:
预期结果:
微信小程序运行不报错
微信小程序运行不报错
实际结果:
微信小程序开发者工具运行报错
module 'pages-sub-demo/common/vendor.js' is not defined, require args is '../../../../../pages-sub-demo/common/vendor.js'
Error: module 'pages-sub-demo/common/vendor.js' is not defined, require args is '../../../../../pages-sub-demo/common/vendor.js'
微信小程序开发者工具运行报错
module 'pages-sub-demo/common/vendor.js' is not defined, require args is '../../../../../pages-sub-demo/common/vendor.js'
Error: module 'pages-sub-demo/common/vendor.js' is not defined, require args is '../../../../../pages-sub-demo/common/vendor.js'
bug描述:
- 项目中某个子包引用了 node_module 组件库里的某个方法(如: useSelect)
- 该方法同时被组件库里的某个组件(如: SdpForm)引用
- 打包后 useSelect 方法被打进了子包
- 但是 SdpForm 组件是在主包里, 并且它引用的 useSelect 方法此时是从子包里引用的, 导致报错(主包引用某个子包的方法, 并且没有使用组件异步化方式)
总结:hbuilderx 5.x 版本会将子包引用的组件库中的方法打进子包中,导致组件库引用该方法报错(打包后组件库在主包,方法在子包)
hbuilder4.x 没有问题
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
作为DCloud官方人员,对该bug反馈评审如下:
评审结论
该反馈基本有效,属于HBuilderX 5.x版本编译微信小程序时的分包依赖分析bug,但缺少必要的复现材料,无法直接定位修复。
详细分析
1. 内容完整性评估
缺失关键要素:
- 无代码示例:未提供可运行的最小复现Demo,缺少pages.json分包配置、组件引用方式、node_modules中组件库的具体信息
- 复现步骤不完整:仅标注"看bug描述",无具体操作流程(如组件库安装命令、页面配置方式等)
- 组件库信息缺失:未说明具体使用的组件库名称及版本(如是否使用uni-ui等官方组件库)
有效信息:
- 提供了明确的版本对比(4.x正常/5.x异常),符合回归bug特征
- 错误信息完整:
module 'pages-sub-demo/common/vendor.js' is not defined明确表明主包错误引用了子包vendor.js - 平台环境信息完整(HBuilderX 5.03正式版、Mac系统、微信小程序)
2. Bug成立性判断
知识库依据:
在对话知识库中检索到类似报错记录:
微信开发者工具报错:app.js错误:error: module 'common/vendor.js' is not defined, require args is './common/vendor.js'
但知识库中暂无HBuilderX 5.x版本分包编译vendor.js路径解析错误的明确记录,也未找到相关解决方案。
技术判断:
根据错误日志分析,该问题属于编译器依赖分析缺陷——当node_modules中的方法被同时引用时,5.x版本的依赖分析器错误地将共享方法标记为子包独享资源,导致主包组件引用时出现跨包引用错误。这违反了微信小程序分包规范(主包不应直接引用子包非异步化资源)。
3. 处理建议
需用户补充以下材料方可进入修复流程:
- 最小复现项目:上传一个包含主包组件和子包引用相同node_modules方法的精简Demo
- 组件库信息:提供package.json中相关依赖的名称和版本号
- 分包配置:提供pages.json中subPackages的具体配置片段
- 详细复现步骤:
- 创建项目的具体操作
- 组件安装命令
- 页面引用代码示例
- 编译运行方式
临时规避方案(基于知识库推断):
在官方修复前,可尝试:
- 在子包中避免直接引用node_modules中可能被主包共享的方法
- 或通过
preloadRule调整分包预加载策略(需验证)
后续跟进:
请补充上述材料后重新提交,我们将优先处理此类5.x版本回归问题。如能提供GitHub仓库链接或附件Demo,可加快排查效率。