如何在Meteor客户端中使用npm模块?

时间:2012-05-08 21:37:18

标签: node.js meteor

我对如何在Meteor客户端代码中使用npm模块感到困惑。

我理解像fs这样的模块只能在服务器端工作,但在这种情况下,我想使用这样的简单文本模块来显示漂亮的日期:

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

我尝试在/ public / 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()))
  ...

但是它在客户端代码中不起作用:

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"

在这种情况下,服务器端对我来说没用,因为我正在尝试在客户端上呈现文本。

1 个答案:

答案 0 :(得分:6)

我认为您不需要使用服务器端版本。仅将npm内容用于服务器端,顺便提一下,也可以将它放在/ public /中。谁知道也许你可以在你的/ public /中调用它,试试吧。或试试这个。

使用类似jquery timeago.js

的内容

将它放在/ client /或/ client / js

之类的内容中

创建/client/helpers.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'把手辅助函数的示例。

{{ date created }}

其中日期是handebars助手,并且创建的是来自meteor / mongo集合的日期。

参见github Britto项目。这就是我得到这段代码片段并在我写的聊天室应用中使用它的地方。工作正常。

还有其他几个漂浮在那里。访问madewith.meteor.com并仔细阅读一些项目的来源。