【问题标题】:How do I correctly import my collection definition?如何正确导入我的集合定义?
【发布时间】:2017-03-23 10:54:03
【问题描述】:

如何正确导入我的集合定义? 尝试导入时收到此错误消息

我从主 myMeteorApp.js 文件中外部化了我的集合定义: (我的目录结构是这样的:)

/myMeteorApp
/myMeteorApp.js 

...到 tasks.js 文件: (我的目录结构目前是这样的:)

/myMeteorApp
--/imports/api/tasks.js 

tasks.js 的内容如下所示:

import { Mongo } from "meteor/mongo";

const Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});

const buyList = new Mongo.Collection("BuyList");
const WhoAreWe = new Mongo.Collection("whoDb");
const merchantReviews = new Mongo.Collection("MerchantReviews");
const Messages = new Meteor.Collection("messages", {transform:     function (doc) { doc.buyListObj = buyList.find({sessionIDz: {$in: [doc.buyList]}}); return doc; }});

export { Images };
export { buyList };
export { WhoAreWe };
export { merchantReviews };
export { Messages };

我安装了 babel-preset-es2015 和 ecmascript 包,但这些都没有帮助。

期待您的帮助...

【问题讨论】:

  • 你安装了ecmascript 包吗?
  • @MasterAM 嗨,我尝试安装 ecmascript 包:meteor add ecmascript,我得到的回复是:ecmascript without a version constraint has already been added
  • @MasterAM 安装了 ecmascript 包,但仍然收到相同的错误消息。您包含的链接没有帮助。还有其他想法吗?
  • 在一个新项目上试试这个并隔离问题。请指定您的流星和软件包版本 (.meteor/packages)。

标签: meteor collections import


【解决方案1】:

一切都是我们的聊天会话,表明您的原始应用使用了 Meteor 1.2,它不支持 ES2015 模块。另外,你没有正确import他们。

以下是import 相关问题的简短清单:

  1. 确保您的项目实际使用 Meteor v1.3+(运行 meteor --version)。早期版本不支持模块功能。
  2. 确保已安装ecmascript 包(从项目的根目录运行meteor listcat .meteor/packages | grep ecmascript。如果没有,meteor add ecmascript。这是用于编译 ES2015 的包。
  3. 确保您是using it correctly。有 2 种类型的导出:

    • 默认 - import foo from 'imports/bar'export default bar 一起使用。
    • 命名 - import { foo } from 'imports/bar'export const foo = ... 一起使用,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2013-06-12
    • 2021-08-30
    相关资源
    最近更新 更多