How to use node modules (like MomentJS) in EJS views?

ejs, express, momentjs, node.js

Solution

I found another way of doing this, and I think it has some advantages.

- Don't polute your code exporting filters.

- Access any method without the need to export them all.

- Better ejs usage (no | pipes).

On your controller, or view.js do this:

var moment = require('moment');
exports.index = function(req, res) {
    // send moment to your ejs
    res.render('index', { moment: moment });
}

Now you can use moment inside your ejs:

<html>
    <h1><%= moment().fromNow() %></h1>
</html>

I'm not an Node expert, so if anyone see something bad on doing this, let me know! :)

Problem

To use MomentJS in views/custom.ejs, what is the correct way (if any)? Server side routes/index etc we can easily use `require('moment');` etc and it works fine. Server Side (EJS views) views/custome.ejs, something like `<% var m = require('moment'); %>` doesn't work I am using ExpressJS with EJS as the template engine.

Original source

Related problems