Node.js 如何在EJS模板中使用包?

Node.js 如何在EJS模板中使用包?,node.js,ejs,timeago,Node.js,Ejs,Timeago,我正在尝试在EJS模板中使用timeago.js。我已尝试按如下方式导出库: src/lib/lib.js const timeago = require('timeago.js'); exports.index = function(req, res){ res.render('links/list',{timeago: timeago}); } const timeago = require('timeago.js'); exports.index =

我正在尝试在EJS模板中使用timeago.js。我已尝试按如下方式导出库:

src/lib/lib.js

 const timeago = require('timeago.js');
    exports.index = function(req, res){
        res.render('links/list',{timeago: timeago});
    }
const timeago = require('timeago.js');

exports.index = function(req, res) {
    const links = [
        {
            created_at: new Date()
        }
    ];
    res.render('links/list',{ timeago, links });
}
路线是: routes/links.js

router.get('/', (req, res)=>{
        sequelize.query('SELECT * FROM links', {
            type: sequelize.QueryTypes.SELECT
        }).then((links)=>{
            res.render('links/list', {links: links});
        });
    });
EJS模板是: 视图/链接/list.ejs

<div class="container p-4">
     <div class="row">
         <% for(i of links){ %>
             <div class="col-md-3">
                 <div class="card text-center">
                     <div class="card-body">
                         <a target="_blank" href="<%= i.url %>">
                             <h3 class="card-title text-uppercase"><%= i.title %></h3>
                         </a>
                         <p class="m-2"><%= i.description %></p>
                         <h1><%= timeago.format(i.created_at); %></h1>
                         <a href="" class="btn btn-danger">Delete Link</a>
                         <a href="" class="btn btn-secondary">Edit</a>
                     </div>
                 </div>
             </div>
     <% } %>

我需要使用h1中的库来转换从数据库获得的时间戳。但是,我总是会遇到相同的错误:
timeago未定义


如何正确导出Timeago以在EJS模板中使用?如果我需要routes文件中的库并通过一个对象将其发送到EJS模板,则效果很好,但从另一个文件导出时效果不佳。

我制作了以下测试程序,对
timeago.js进行了最低限度的测试。

const ejs = require('ejs');
const timeago = require('timeago.js');

let template = `
<% for(i of links){ %>
    <h1> <%- i.created_at %>: <%- timeago.format(i.created_at) %> </h1>
<% } %>
`;

const renderData = {
    links: [
        {
            created_at: new Date()
        }
    ],
    timeago
};
const output = ejs.render(template, renderData);

console.log(output);
您没有传入timeago对象的位置。这一行:

res.render('links/list', {links: links});
应该是:

res.render('links/list', {links: links, timeago});

编辑:

使用注释中指定的文件路径的更完整示例:

routes/links.js:

var express = require('express')
var router = express.Router();

const lib = require("../src/lib/lib");

router.get('/', (req, res)=>{
    lib.index(req, res);
});

module.exports = router;
src/lib/lib.js

 const timeago = require('timeago.js');
    exports.index = function(req, res){
        res.render('links/list',{timeago: timeago});
    }
const timeago = require('timeago.js');

exports.index = function(req, res) {
    const links = [
        {
            created_at: new Date()
        }
    ];
    res.render('links/list',{ timeago, links });
}

你能告诉我你是怎么出口的吗,是的,这是第一个代码块我需要timeago.js并试图导出它,但我不知道如何实际导出是的,我也这么做了,并且可以工作问题是我想使用另一个文件中的库,而不是从这里的路由文件src/lib/lib.js到ejs模板views/links/list.ejs添加了一个使用您需要的文件路径的示例请求。