错误原因:
微信开发者工具从 1.05.2201210 版本开始,对小程序项目新增了无依赖文件过滤能力。
如果某个 js 文件被静态分析显示是无依赖文件,在实际运行时又被其他 js 文件 require 引用了,则会在工具模拟器中报错这个错误。
此时,如果你继续预览或者上传代码,则在真机运行环境中会报 xxx.js is not defined 的错误。
解决方式:
- 修改依赖引用的代码:可根据控制台中的【代码依赖分析异常】提示进行修改。(推荐)
- 关闭过滤无依赖文件:project.config.json 中 settings 选项添加 ignoreDevUnusedFiles: false , ignoreUploadUnusedFiles: false
详细分析:
微信开发者工具的无依赖文件过滤能力,是基于代码静态依赖分析的数据来实现的。
也就是会分析小程序项目中的代码内容,如果发现某个 js / wxml / wxss / json 文件没有被使用到,则会将其列为无依赖文件。
无依赖文件在模拟器运行时会被忽略,在上传时也不会打入代码包中,因此可以有效减少代码包大小。
但由于 js 代码的灵活性,代码静态依赖分析功能在某些情况下,无法准确分析出依赖引用关系(控制台中会有对应的 warning 提示),此时部分 js 文件会被误判为无依赖文件,导致报错。开发者需配合提示信息修改代码,才能继续使用此功能。
导致依赖异常的常见情况:
- 动态引用的情况,如 var a = 'somefile.js'; require(a);
- 将 require 函数赋值给其他变量的情况,如 var a = require; a('somefile.js');
设置->项目设置->过滤无依赖文件 勾选去掉 就行了
报错是因为微信开发者工具有缓存了,重启一下,我经常出现这种情况,上一秒还好好的下一秒就报错了,这个时候检查了自己代码没有问题的话,重启一下开发者工具就可以了,不要问我为什么,开发者工具自己有想法
微信开发者工具版本:1.06.2303220
设置 -> 项目设置 -> 本地设置 tab,上传时过滤无依赖文件,✔,来回点几次这个√,就好了。
所以(推荐)的那个方法到底怎么修改啊
恕我直言,微信又在瞎搞。不可否认本意是好的,但是机制有点问题。明明引用了的东西,非要报错说没引用。。。这就太坑了
按提示操作,通过了编译。
神奇的是,保存该文件时,加入的两个参数瞬间就没了,试了多次都是这样,一点保存,这两行瞬间消失!
国产的东西,功能就是强大!
清除编译缓存就行了,估计是开着IDE,然后git切换分支了,操作快了,导致微信缓存bug....
清除缓存即可,用了一下ui组件就报这个也是离谱
综上所述,算是bug,往尽快修复