我对如何在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"
在这种情况下,服务器端对我来说没用,因为我正在尝试在客户端上呈现文本。
答案 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并仔细阅读一些项目的来源。