Javascript Meteor:将根客户机和库文件夹中的文件放入Meteor包中

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

我需要建立一个流星包的基础上现有的流星应用程序。因此,我创建了文件夹包,并在该文件夹中创建了新包“package\u anything”

所以我现在的结构是:

.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(“跟踪器”)的操作