无法在 ejs 中设置未定义的属性“回合”

Posted

技术标签:

【中文标题】无法在 ejs 中设置未定义的属性“回合”【英文标题】:Cannot set property 'round' of undefined in ejs 【发布时间】:2015-05-19 16:44:30 【问题描述】:

我正在从“忍者的秘密”一书中学习 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));

谁能告诉我我哪里错了?

【问题讨论】:

【参考方案1】:

您可能使用的是版本 2。

EJS 版本 2 对该版本进行了一些重大更改 (值得注意的是,删除过滤器功能)。 Source


编辑:

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

【讨论】:

要成功运行此代码,我应该使用旧版本的 ejs 吗? @gotchha。是的.. v2 之前的任何版本 否则你可以创建自己的过滤器对象并在其中创建一个round方法 示例npm install &lt;package&gt;@&lt;version&gt; @amarprabhu.. 有几个选项,如果您使用 express,一种方法是编写一个类似 app.locals.funName=function() 的函数,这将在您的整个应用程序中访问,也可以在您的视图引擎中访问。

以上是关于无法在 ejs 中设置未定义的属性“回合”的主要内容,如果未能解决你的问题,请参考以下文章

无法在键值存储中设置未定义的属性

无法在 Vue.js 中设置未定义的属性“产品”[重复]

错误 _renderer.setElementStyle “无法在 [null] 中设置未定义的属性‘背景颜色’”

无法读取 ejs 中未定义的属性“子字符串”

无法读取未定义的属性“名称” - mongoose、express、nodeJS、ejs

无法读取 Node JS 中未定义的属性“名称”