无法设置属性'round'的未定义

Cannot set property 'round' of undefined in ejs

本文关键字:未定义 round 设置 属性      更新时间:2023-09-26

我正在学习《忍者的秘密》一书中的nodejs。我有一个ejs程序,我从书中复制了它来运行,但它显示了以下错误,而我没有对程序进行任何更改。

这是一个错误:

ejs.filters.round = function(number, decimalPlaces) {
               ^ 
 Cannot set property 'round' of undefined

我有这个代码:

 var ejs = require('ejs');
 var template = '<%=: price * 1.145 | round:2 %>';
 var context = {price: 21};

ejs.filters.round = function(number, decimalPlaces) {
number = isNaN(number) ? 0 : number;
decimalPlaces = !decimalPlaces ? 0 : decimalPlaces;
var multiple = Math.pow(10, decimalPlaces);
return Math.round(number * multiple) / multiple;
};
console.log(ejs.render(template, context));

有人能告诉我哪里错了吗?

可能您使用的是版本2。

EJS的第2版对此版本进行了一些突破性的更改(值得注意的是,删除过滤器功能)。源


编辑:

您可以切换到版本2之前的版本,也可以创建自己的过滤器对象,然后可以将其扩展为包含自己定义的过滤器