7

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

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

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

我已经尝试在 /public/node_modules 下安装该模块,并且按照 SO 的这些说明,它在服务器端运行良好:( 我们如何或可以通过 npm 与 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"

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

4

1 回答 1

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 created }}

其中 date 是 handebars 助手, created 是来自流星/mongo 集合的日期。

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

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

于 2012-05-08T21:58:25.600 回答