繁体   English   中英

流星:全局常量未从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.jsmodules > 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 APP/lib/_constants.js之前加载,对吗?

但这显然没有发生。 我究竟做错了什么?

谢谢你的帮助!

阅读“ 构建应用程序 ”中的“文件加载顺序”部分:

有几个负载排序规则。 它们按以下优先级顺序应用于应用程序中所有适用的文件:

  1. HTML模板文件总是先加载
  2. 以main开头的文件。 最后加载
  3. 接下来将加载任何lib /目录中的文件
  4. 接下来加载路径更深的文件
  5. 然后按照整个路径的字母顺序加载文件

实现此方法的方式是,在嵌套lib 之前先加载嵌套较深的lib ,这可以说明您的问题。 以下是一些选项:

  1. 不要在深层路径中使用lib 例如,将路径重命名为modules/questions/stuff/collections.js
  2. 将模块移动到软件包中。
  3. 升级到流星1.3(在撰写本文时仍为预发布),并开始使用显式的export / import模块语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM