我正在使用node js表达。我试图在模板文字中调用一个函数。 我制作了一个模块,并导入了主文件,然后将该函数添加到app.locals并在我的视图中进行了正常访问。但是,当我尝试在模板文字以及公共文件中使用它时,出现错误“ currencyToWords未定义”。
我认为在公共文件中这是有道理的,因为我将公共文件夹设为静态。 但是在我看来,这很奇怪,因为当我在html中使用它时,它可以工作,但是当我在模板文字中使用它时,它会出错。
我想在模板文字中使用currencyToWords函数来更改响应。
我有一个解决方案,我可以在公用文件夹中创建文件,然后在该文件中的脚本中添加功能,然后在页脚中导入,但是我不想这样做。
有人可以帮助我解决问题吗?
我的应用程序结构 module.exports = {currencyConverter}
在app.js中 app.js是我创建服务器的主要文件
var { currencyToWords } = require('./config/functions');
app.locals.currencyToWords = currencyToWords;
通过添加本地人,我可以在任何地方的应用程序中访问它
此代码有效:
<div class="fix pull_right">
<h3><%= currencyToWords(property.propertyDetails.price)%></h3>
</div>
这不起作用
var a =`
<p>${currencyToWords(property.propertyDetails.price)}</p>
`;
上面的代码是相同的,但唯一的区别是第一个是在ejs标记中使用,第二个是在ejs和模板文字中使用。
以下是Express中有关app.locals的文档 app.locals app.locals对象具有作为应用程序内局部变量的属性。
console.dir(app.locals.title)
// => 'My App'
console.dir(app.locals.email)
// => 'me@myapp.com'
设置后,app.locals属性的值将在应用程序的整个生命周期中保持不变,而res.locals属性仅在请求的生命周期内有效。
您可以在应用程序内呈现的模板中访问局部变量。 这对于为模板提供辅助功能以及应用程序级数据很有用。本地变量可通过req.app.locals在中间件中使用(请参见req.app)
app.locals.title = 'My App'
app.locals.strftime = require('strftime')
app.locals.email = 'me@myapp.com'