Meteor:全局常量未从app/lib/_constants.js中获取
Meteor: Global constant not getting picked up from app/lib/_constants.js
我的应用程序目录结构是:
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
之前就已经加载了,对吧?
但这显然没有发生。我做错了什么?
谢谢你的帮助!
阅读结构化应用程序中的"文件加载顺序"部分:
有几种装载顺序规则。它们按顺序应用于应用程序中的所有适用文件,优先级如下:
- HTML模板文件总是先于其他文件加载
- 以main开头的文件。最后加载
- 接下来加载任何lib/目录中的文件
- 下一步加载路径更深的文件
- 然后按整个路径的字母顺序加载文件
按照这种实现方式,嵌套较深的lib
在嵌套较少的lib
之前加载,这解释了您的问题。以下是一些选项:
- 不要在你的深路径中使用
lib
。例如,将路径重命名为modules/questions/stuff/collections.js
- 将模块移动到包中
- 升级至流星1.3(在撰写本文时仍然是预发行版),并开始使用显式的
export
/import
模块语法
相关文章:
- Gulp:如何将CDN用于js-lib
- 错误:找不到模块'/lib/cli'
- 避免将lib依赖项与webpack+handlebas加载程序捆绑在一起
- 检查 javascript lib 是否已经存在
- Routing from Javascript lib in Angular JS 2
- 无法解析模块'react/lib/merge'
- 如何通过ScriptInjector在GWT中使用JS-lib
- 如何在Gulp中使用Browserify lib对模块进行别名
- 使用requireJS加载'lib/request'html代码内部
- Node.js-使用async lib-async.parallel传递一个数组
- Rails 4.1.1.:lib/assets/javascripts中的JS文件;t负载
- 将外部lib绑定到我自己的javascript库中
- 是否有任何Ruby工具或JavaScript-Lib来验证html的格式是否正确
- jquery与另一个lib冲突
- JS-Can't组合lib文件
- 为什么浏览器可以'在`.中找不到js文件/lib/`(相对)位置
- Flash Pro CC HTML5画布&CreateJS-如何将lib文件更新到最新版本
- 等待Lib(IronRouter)导致HTML在加载JS文件后无法加载
- 可以'在node.js中不需要csv-lib
- jQuery-backgroundColor动画未运行(包含color-lib)