无法在 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 <package>@<version>
@amarprabhu.. 有几个选项,如果您使用 express,一种方法是编写一个类似 app.locals.funName=function()
的函数,这将在您的整个应用程序中访问,也可以在您的视图引擎中访问。
以上是关于无法在 ejs 中设置未定义的属性“回合”的主要内容,如果未能解决你的问题,请参考以下文章
错误 _renderer.setElementStyle “无法在 [null] 中设置未定义的属性‘背景颜色’”