Javascript Meteor:将根客户机和库文件夹中的文件放入Meteor包中
我需要建立一个流星包的基础上现有的流星应用程序。因此,我创建了文件夹包,并在该文件夹中创建了新包“package\u anything” 所以我现在的结构是:Javascript Meteor:将根客户机和库文件夹中的文件放入Meteor包中,javascript,meteor,Javascript,Meteor,我需要建立一个流星包的基础上现有的流星应用程序。因此,我创建了文件夹包,并在该文件夹中创建了新包“package\u anything” 所以我现在的结构是: .meteor client lib helpers.js utils.js app.js startup.js lib router.js anything.js packages package_anything lib
.meteor
client
lib
helpers.js
utils.js
app.js
startup.js
lib
router.js
anything.js
packages
package_anything
lib
client
public
library_1
library_2
templates
template.html
router.js
subscription.js
server
publications.js
shared
collections.js
package.js
现在,我在获取文件时遇到了问题,这些文件现在位于packages文件夹之外,无法放入包中。我知道lib
中的所有文件都将首先加载。那么,我如何在包装内做到这一点呢
第二个问题是,我不能将lib/router.js
的内容放入package/package\u anything/lib/client/router.js
中。如果我这样做,应用程序就会崩溃。但我不明白为什么
package.js
Package.describe({
name: 'name:anything',
summary: 'example package',
version: '0.0.1',
documentation: "README.md"
});
Package.onUse(function(api){
api.versionsFrom('METEOR@1.1.0.3');
api.use(['templating', 'mongo']);
api.use(['iron:router@1.0.9'], 'client');
api.addFiles([
'lib/shared/collections.js'
], ['client', 'server']);
api.addFiles([
'lib/server/publications.js'
], ['server']);
api.addFiles([
'lib/client/router.js',
'lib/client/subscription.js'
], ['client']);
});
更新
例如:
lib/anything.js
包含以下内容
App = {}
App.Mode = {}
App.Mode._dep = new Tracker.Dependency()
现在我将这个简单的文件带到packages/package\u anything/lib/client/anything.js
。我在package.js中添加了api.export('App')
但这将导致错误
未捕获引用错误:未定义跟踪器
,因此应用程序崩溃。首先加载包文件。然后是你的常规文件
包文件不能依赖于常规项目中的文件。包文件只能依赖于您明确列出的包依赖项。您编写的内容不太清楚。如果没有定义,那是因为没有正确导出变量或添加文件。如果您没有意识到这一点,lib只会首先在常规应用程序中加载。在包中,每个文件都是根据您为其设置的顺序加载的。另外,常规应用程序的lib是在加载所有包之后加载的。现在,包文件夹之外的所有文件都是先加载的,不是吗?然后按照package.js给出的顺序加载包文件。对吗?看我的答案。还没有,谢谢你。我用另一个例子更新了帖子。我不能解决这个问题。也许你可以向我解释一下,我必须处理这个变量…lib/anywhere.js不是一个包文件。无法从常规应用程序导出变量。如果您试图在包中使用跟踪器,则需要执行类似于package.use(“跟踪器”)的操作