我的app目录结构是:
App
├── client
├── lib
│ ├── _constants.js
│ ├── config
│ └── router
├── modules
│ ├── answers
│ └── questions
├── node_modules
│ └── bcrypt
├── public
│ └── imgs
├── server
│ ├── lib
│ ├── roles
│ └── startup
└── settings-example.json
在我的_constants.js
中,我定义了一些全局变量,例如我打算在Schemas = {}
或modules > module_name> lib > collections.js
modules > module_name> lib > methods.js
但是模块中没有找到全局变量' collections.js。这是我得到的错误:
W20160323-21:38:58.977(-7)? (STDERR) ReferenceError: Schemas is not defined
W20160323-21:38:58.977(-7)? (STDERR) at modules/answers/lib/collections.js:22:1
W20160323-21:38:58.977(-7)? (STDERR) at modules/answers/lib/collections.js:89:1
根据我的理解,APP/lib/_constants.js
文件中的全局变量应该在加载更深modules/module_name/lib/collections.js
之前加载,对吗?
但这显然没有发生。我究竟做错了什么?
感谢您的帮助!
答案 0 :(得分:1)
从Structuring your application:
中读取“文件加载顺序”部分有几种加载顺序规则。它们按顺序应用于应用程序中的所有适用文件,优先级如下:
- HTML模板文件总是在其他所有内容之前加载
- 以main开头的文件。最后加载
- 下一个
加载任何lib /目录中的文件- 接下来加载具有更深路径的文件
- 然后按整个路径的字母顺序加载文件
醇>
实现此方法时,深层嵌套lib
在之前加载嵌套lib
,这解释了您的问题。以下是一些选项:
lib
。例如。将路径重命名为modules/questions/stuff/collections.js
。export
/ import
模块语法。