应用程序无法正常工作,除非server.js文件中有内容

时间:2017-08-18 03:48:14

标签: meteor

我有一个短信应用程序,我创建了一段时间后,并打破了。我通过将所有代码复制到另一个项目并安装相同的包来修复它。当我这样做时,它停止工作,我不知道为什么。我将其缩小到texts,因为没有数据被发布,所以返回一个空数组。但是在刚刚创建的新应用程序中,我有完全相同的代码,但是这个代码不起作用...我发现我的其他应用程序是我复制的(它没有工作,然后随机它再次开始工作)和经过一天不接触它后,它工作了。是的,autopublish安装在版本1.0.7。请帮助这是一个重新解决的问题,我真的需要一个答案!

客户 - main.js

import React from "react";
import ReactDOM from "react-dom";
import {Meteor} from "meteor/meteor";
import {Tracker} from "meteor/tracker";
import { BrowserRouter, Route, Switch, Redirect, withRouter} from 'react-router-dom'

import {Texts} from "./../imports/api/Text";
import App from "./../imports/ui/App";
import NotFound from "./../imports/ui/NotFound";
import Signup from "./../imports/ui/Signup";
import Login from "./../imports/ui/Login";

Meteor.startup(() => {
    Tracker.autorun(() => {
        let texts = Texts.find().fetch();
        let signedIn = !!Meteor.userId();
        if(signedIn){
          console.log("signed in");
        }else{
          console.log("signed out")
        }
        console.log(texts)
        const routes = (
            <BrowserRouter>
                <Switch>
                    <App path="/chat" texts={texts}/>
                    <Signup path="/signup" />
                    <Login path="/login" />
                    <Route component={NotFound}/>
                </Switch>
            </BrowserRouter>
        );
        ReactDOM.render(routes, document.getElementById("app"));
    });
    console.log("HI")
});

服务器 - main.js

import { Meteor } from 'meteor/meteor';

Meteor.startup(() => {
  const Texts = new Mongo.Collection("texts") //<--app only works when I put this line of code in the server file
});

Text.js

import {Mongo} from "meteor/mongo";

export const Texts = new Mongo.Collection("texts");

1 个答案:

答案 0 :(得分:0)

您需要在客户端和服务器上初始化集合。从您的代码看,您似乎只是从客户端代码导入Text.js,这就是为什么它只在您在服务器上创建集合时才有效。您可以在Text.js中导入相同的server/main.js,它应该有效。