2017-08-07 4 views
1

ReactとReact-Router v4を使用して、Meteor Appにserver-renderパッケージを使用したいと思います。RouteとMeteor.userIdを使用したMeteor server-render

Error running template: TypeError: Meteor.subscribe is not a function 

それはcreateContainer関数にあります:私は、サーバー上だ場合、私がnullにMeteor.subscribeを得ることができる方法を理解していない

export default createContainer(() => { 
    const postsHandle = Meteor.subscribe('post'); 
    const loading = !postsHandle.ready(); 
    const postsList = Post.find({ 'draft': false }).fetch(); 
    const listExists = !loading && !!postsList; 
    return { 
     loading, 
     listExists, 
     posts: listExists ? postsList : [], 
    }; 
    }, PostList); 

しかし、onPageLoadイベントがエラーを返します。

誰かが私の問題について考えていますか?

コミュニティありがとうございます!

+0

サーバーにサブスクライブしていません。公開するだけです。サーバー上のコレクションに直接アクセスして、すべてがそこにあることを保証することができます。 –

答えて

0

私は同じコメントに記載されているように、サーバー上に「Meteor.subscribe」がないため、コードがシンクオブジェクトを介してサーバーに渡されるとエラーが発生します。 クライアントコードがクライアント上でのみ実行されている場合でも、購読をif(Meteor.isClient)にラップする必要があります。

その他の問題が発生することもあります、あなたはscreen.widthを読み取ろうとしている場合と仮定言う、などの特性の種類、あなただけの

上記のようにそれをラップする必要がありますので、あなたのコードは

export default createContainer(() => { 
    var loading,listExists = false 
    var postsList= [] 
    if(Meteor.isClient){ 
     const postsHandle = Meteor.subscribe('post'); 
     loading = !postsHandle.ready(); 
     postsList = Post.find({ 'draft': false }).fetch(); 
     listExists = !loading && !!postsList; 
     } 
     return { 
     loading, 
     listExists, 
     posts: listExists ? postsList : [], 
     }; 
    }, PostList); 
なり

これは正常に機能するはずです。変数と機能スコープを処理してください。

+0

これは本当に質問に答えません。別の質問がある場合は、[質問する](https://stackoverflow.com/questions/ask)をクリックして質問することができます。十分な[評判](https://stackoverflow.com/help/)があれば、この問題にもっと注意を払うために[奨励金を追加](https://stackoverflow.com/help/privileges/set-bounties)することもできます何が評判か)。 - [レビューの投稿](/レビュー/低品質の投稿/ 17204913) –

関連する問題