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

Node.js 如何在Meteor客户端中使用npm模块?,node.js,meteor,Node.js,Meteor,我完全搞不懂如何在Meteor客户端代码中使用npm模块 我知道像fs这样的模块只能在服务器端工作,但在这种情况下,我想使用这样一个简单的文本模块来显示漂亮的日期: 我已尝试在/public/node_modules下安装模块, 它在服务器端非常有效,遵循SO的以下说明:( ) 但是,它在客户端代码中不起作用: if (Meteor.is_client) { var require = __meteor_bootstrap__.require var timeago = require

我完全搞不懂如何在Meteor客户端代码中使用npm模块

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

我已尝试在/public/node_modules下安装模块, 它在服务器端非常有效,遵循SO的以下说明:( )

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

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"

在这种情况下,服务器端对我来说是无用的,因为我试图在客户端呈现文本。

我认为您不需要使用服务器端版本。只在服务器端使用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是meteor/mongo集合中的日期

请参阅github-Britto项目。这就是我得到这段代码片段的地方,并将其用于我编写的聊天室应用程序中。很好


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

谢谢,伙计!所以问题的总结是:*npm模块对于客户端来说不是最佳的*把手助手是你的朋友*jQuery插件可以在应用程序目录中自动使用和引用更正“app/client dir”-你会看到“ReferenceError:jQuery未定义”否则。是的,它对我有效,我使用了JonathanKingston代码中的Britto示例…还有另一个项目也有很好的人类可读日期…通过maddewith.meteor.com搜索projects@7zark7但是,如果要使用节点模块,则应尝试在/public/目录中安装npm。我不确定我是否清楚这一部分。@SteeveCannon,我建议使用一个指定了节点模块依赖项的package.json,以及一个scripts.install,以便在安装这些DEP后将node_modules文件夹移动到public/中。我已经编写了一个示例项目,它也将部署到Heroku:。中的方法对我有效。
{{ date created }}