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

Cannot set property 'round' of undefined in ejs

我正在从 "secrete of ninja" 书中学习 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。

Version 2 of EJS makes some breaking changes with this version (notably, removal of the filters feature). Source


编辑:

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