2012-05-08 12 views
7

Meteorクライアントコードでnpmモジュールを使用する方法を徹底的に熟知しています。Meteorクライアントでnpmモジュールを使用するには?

私はFSのようなモジュールのみをサーバー側に働くだろう理解が、この場合には、私はかなりの日数を表示するために、このような単純なテキストモジュールを使用したい:

https://github.com/ecto/node-timeago

私が試しましたパブリック/下モジュールを取り付ける/ node_modules、 それはSOから、これらの指示に従って、サーバ側で素晴らしい作品:( How do we or can we use node modules via npm with Meteor?

Meteor.startup(function() { 
    var require = __meteor_bootstrap__.require 
    var timeago = require('timeago') 
    console.log(timeago(new Date())) 
    ... 

Howevえー、それはクライアント側のコードでは動作しません:

if (Meteor.is_client) { 
    var require = __meteor_bootstrap__.require 
    var timeago = require('timeago') 
    console.log(timeago(new Date())) 
    ... 

Uncaught ReferenceError: __meteor_bootstrap__ is not defined" 

サーバー側私は、クライアント上のテキストをレンダリングしようとしているように、この場合には、私にとって一種の無駄です。

+0

http://stackoverflow.com/q/17068813/586086のメソッドは私のために働く。 –

答えて

6

私はあなたがサーバー側のバージョンを使用する必要はないと思う。サーバーサイドのみにnpmのものを使用し、btwを/ public /に入れてください。多分あなたが/ public /に入ったらそれを呼び出すことができるのを誰が知っていますか、試してみてください。またはこれを試してください。

使用

timeago.js jQueryのようなもの/client/helpers.jsまたはそのようないくつかの作成/クライアント/またはクライアント/ JS

/のようなもので、それを入れてください。

ハンドルバーヘルパーを使用します。

Handlebars.registerHelper('date', function(date) { 
    if(date) { 
    dateObj = new Date(date); 
    return $.timeago(dateObj); 
    } 
    return 'a long long time ago in a galaxy far away'; 
}); 

テンプレートから「日付」ハンドルバーヘルパー機能を呼び出す例。

{{ date created }} 

ここで、dateは、ハンドバースヘルパーであり、作成された日付はmeteor/mongoコレクションからのものです。

github Brittoプロジェクトを参照してください。それが私がこのコードスニペットを入手し、私が書いたチャットルームのアプリでそれを使ったところです。正常に動作します。

他にもいくつか浮遊しているものがあります。 madewith.meteor.comに行き、いくつかのプロジェクトのソースを熟読してください。

+0

ありがとうございました! * npmモジュールはクライアント側に最適ではありません *ハンドルバーヘルパーはあなたの友だちです * jQueryプラグインは、アプリケーションディレクトリにある場合に自動的に使用され、参照されます – 7zark7

+0

修正 "app/client dir" - そうでなければ "ReferenceError:jQueryは定義されていません"と表示されます。 – 7zark7

+0

ええ、それは私のために働いています、私はJonathanKingstonのコードからBrittoの例を使用しました...人間が読める良い日付も持っている別のプロジェクトもあります... maddewith.meteor.comプロジェクトを検索してください –

関連する問題