今天在老项目里新加了一处require('moduleA')
,奇怪的是从未修改过得文件却报错了。
去掉以后就可以正常运行。
经过调试发现,新加上require('moduleA')
后,另一个文件里调用的require('moduleB').func
,func
为undefined
而moduleB
里明确定义了func
简单走了一下require的流程,发现循环require确实会存在模块未初始化完成的问题。
官方手册对此也有提及:
Modules > Cycles
一种解决方法就是不要使用require('moduleB').func
这种用法。而是
1 | var a = require('module'); |
看来好好规划模块确实很有必要,而且以后也不能过于随心所欲的require()
了