【问题标题】:Meteor: Putting files from root client- and lib-folder inside a meteor-packageMeteor:将根客户端和 lib 文件夹中的文件放入流星包中
【发布时间】:2015-12-03 20:21:36
【问题描述】:

我需要基于现有的流星应用构建一个流星包。所以我创建了文件夹包,并在这个文件夹中创建了新包“package_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

现在我在获取文件时遇到了问题,这些文件现在位于包文件夹之外的包中。我知道lib 中的所有文件都将首先加载。那么我该如何在包内做到这一点呢?

第二个问题是我不能把lib/router.js的内容放在package/package_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_anything/lib/client/anything.js。我在 package.js 中添加了 api.export('App')

但这会给我带来错误Uncaught ReferenceError: Tracker is not defined,所以应用程序崩溃了。

【问题讨论】:

  • 你写的不是太清楚。如果没有定义,那是因为您没有正确导出变量或添加文件。如果您不知道这一点,lib 只会在您的常规应用程序中首先加载。在包中,每个文件都根据您为其设置的顺序加载。此外,常规应用程序的 lib 会在所有包加载完毕后加载。
  • 现在包文件夹之外的所有文件都首先加载,不是吗?之后,包文件按照 package.js 给出的顺序加载。对吗?
  • 看我的回答。他们不是

标签: javascript meteor


【解决方案1】:

首先加载包文件。然后是你的常规文件。

包文件不能依赖于常规项目中的文件。包文件只能依赖于您明确列出的包的依赖项。

【讨论】:

  • 好的,到目前为止谢谢。我用另一个例子更新了帖子。我无法解决这个问题。也许您可以向我解释一下,我必须处理这个变量...
  • lib/anything.js 不是包文件。您无法从常规应用中导出变量。如果您尝试在包中使用 Tracker,则需要执行类似 package.use('tracker')
猜你喜欢
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
相关资源
最近更新 更多