为什么 collections 中的任何一个在发布后都没有被定义?

Why aren't any of collections being defined after publishing them?

我的浏览器控制台中不断收到这些错误消息:

Exception in template helper: ReferenceError: "CollectionNames" is not defined

"CollectionNames" 是我应用程序中的所有 collection。我已经研究过但找不到合适的解决方案。

我的环境:
我是运行 meteor 1.2

task.js 文件是我定义每个 collection 的地方。下面是 task.js

中的代码 /我的流星应用
--/imports/api/tasks.js

import { Mongo } from "meteor/mongo";
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';

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

buyList = new Mongo.Collection("BuyList");

WhoAreWe = new Mongo.Collection("whoDb");
merchantReviews = new Mongo.Collection("merchantReviews");

Messages = new Meteor.Collection("messages", {transform: function (doc) 
{ doc.buyListObj = buyList.find({sessionIDz: {$in: [doc.buyList]}});  return doc; }});

服务器是我发布 collection 的地方。下面是代码:
/我的流星应用
--/server/main.js

import buyList from '../imports/api/tasks.js';
import Messages from '../imports/api/tasks.js';
import Images from '../imports/api/tasks.js';
import WhoAreWe from '../imports/api/tasks.js';
import merchantReviews from '../imports/api/tasks.js';

Meteor.startup(() => {
// code to run on server at startup

Meteor.publish('buyList', function(){
return buyList.find();
});


Meteor.publish('Messages', function(){
return Messages.find();
});

Meteor.publish('Images', function(){
return Messages.find();
});


Meteor.publish('WhoAreWe', function(){
return WhoAreWe.find();
});

Meteor.publish('merchantReviews', function(){
return merchantReviews.find();
});

});


而客户端是我订阅 collection 的地方。在下面找到代码:

/myMeteorApp
--/client/main.js

import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';

Meteor.subscribe('Messages');
Meteor.subscribe('WhoAreWe');
Meteor.subscribe('Images');
Meteor.subscribe('buyList');

我哪里错了。我已经在这里待了很多天了......请帮忙!

这是一个命名问题,当你发布集合时,你应该引用集合名称(messages),而不是流星变量(Messages)

Meteor.publish('messages', function(){...

集合必须在客户端和服务器上定义!只需在客户端和服务器端导入您的集合名称:

import { buyList, Messages, Images, WhoAreWe, merchantReviews } from '../imports/api/tasks.js';

当然,您仍然需要订阅各种出版物