Node.js 如何在EJS模板中使用包?
我正在尝试在EJS模板中使用timeago.js。我已尝试按如下方式导出库: src/lib/lib.jsNode.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 =
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添加了一个使用您需要的文件路径的示例请求。