uni-app require 小程序分包异步化编译报错

uni-app require 小程序分包异步化编译报错

开发环境 版本号 项目创建方式
Windows 10 家庭中文版–22H2 HBuilderX
### 操作步骤:
https://uniapp.dcloud.net.cn/tutorial/miniprogram-subcontract-asynchrony.html#%E5%88%88%E5%8C%85%E5%BC%82%E6%AD%A5%E5%8C%96

### 预期结果:
正常异步加载分包文件

### 实际结果:
uniapp 编译报错

### bug描述:
https://uniapp.dcloud.net.cn/tutorial/miniprogram-subcontract-asynchrony.html#%E5%88%86%E5%8C%85%E5%BC%82%E6%AD%A5%E5%8C%96  

场景:主包中页面 require 异步加载其他分包下 js 文件  

对照uniapp官方文档的例子, 发现编译报错:  

Cannot statically analyse 'require(…, …)' in line 1490  
Cannot statically analyse 'require(…, …)' in line 1552  

更多关于uni-app require 小程序分包异步化编译报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

vue2还是vue3,你的代码怎么写的?

更多关于uni-app require 小程序分包异步化编译报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


已补充相关细节,帮忙看看

【vue2 项目】,主包下某个页面的代码
//minisecond 是个分包 require(’…/minisecond/static/test.js’, function(utils) { console.warn("[testRequire] success:", utils) }, function(err) { console.error("[testRequire] fail:", err.mod, err.errMsg) })
在 uniapp 下添加时会编译阶段就报错:
Cannot statically analyse ‘require(…, …)’ in line 1490 Cannot statically analyse ‘require(…, …)’ in line 1552

大致意思是 require 方法编译时用的时 Node 的封装,只能传一个string参数; 但微信端的require方法可以传3个;

另外,我把这段代码放到编译后wx小程序的代码中了,发现时正常的; 所以想问问 ,这玩意uniapp 官方有试过吗?

官方文档的js异步化指南是针对vue3的

vue2我还没有测试,周内上班了看一下

vue2我测试了一下确实有这个报错,文档我更正了,有相关解决方案我再回复

回复 DCloud_UNI_JBB: 好的,多谢

回复 DCloud_UNI_JBB: cy一下,急需

在uni-app中实现小程序分包异步化时,遇到Cannot statically analyse 'require(…, …)'编译错误通常是由于HBuilderX的静态分析机制无法识别动态路径导致的。根据官方文档示例,正确语法应为require(path),其中path必须是静态字符串或可解析的常量表达式。

检查代码中第1490行和1552行的require调用:

  1. 确保路径参数是字符串字面量,例如require('../../subpackageA/utils')
  2. 避免使用变量拼接路径,如require(${path}/utils)
  3. 若需动态加载,应使用小程序原生require.async()方法而非uni-app编译器的require

建议将代码修改为:

// 主包页面
const module = require('../../subpackageA/utils.js')
回到顶部