环境:
MacOS 10.15 Catalina
HBuilder X 2.6.5 20200314
uniapp
参见附件的demo工程,当代码中存在动态require时:
return require('./'+type)
此时,运行到内置浏览器(或任何其他编译行为)时,试图编译 node_modules 下一切文件。如图,它尝试编译 *.md, makefile, 等等一切文件,即使并没有使用的包里的文件(例如我随便引入了两个包 compression和ws,但并没有使用)
在 Windows版 HBuilder X 2.6.5 上没有出现这个错误。
yuanjin (作者)
进一步发现,不需要循环引用。只要是动态引用,就会出错。例如,只要代码里出现有
就会有上述问题,会把 node_modules里一切文件都扫描编译。动态引用,有时还是有用的吧?比如编译时不确定到底需要引用哪个类,运行时由用户指定才明确。这在 nodejs里,在windows版的HBuilderX都可以用的,其实在Mac版里也可以,虽然尝试扫描一切文件,但最后还是编译通过,可以使用的。只是编译整个node_modules太耗时了。
不过确实,这用其他方法可以绕过的,不是必须的。
2020-03-17 21:57
DCloud_UNI_FXY
回复 yuanjin: uni-app不支持动态require
2020-03-18 11:11