這是一個奇怪的問題,但跟着我一起。我有一個具有快速應用程序的nodejs服務器。在應用程序中,設置我的當地人如下:NodeJS Express app.locals不能直接訪問功能
var moment = require('moment');
app.locals.moment = moment;
的EJS被渲染爲:
exports.page = function (req, res) {
res.render('first-page');
};
然後,在我的EJS,我有以下代碼:
<%
if (!moment) {
throw new Error('moment is not defined');
}
function formatDate(date) {
return moment(date).format();
}
%>
<p><%= formatDate(1435856054045); %></p>
發生的有趣之處在於那一刻不會引發異常。因此,正如文獻所述,它在ejs的範圍內定義。然而,ejs說這個時刻沒有在formatDate中定義,引發了一個異常。如果我將formatDate更改爲以下內容,則一切正常。
function formatDate(date) {
return locals.moment(date).format();
}
我的問題是如何在ejs中定義的函數作用域和應用於它們的上下文。 ejs是否對浮動javascript應用了不同的上下文?我假設它時,你有ejs
輸出生成的功能(作爲一個模板編譯)像formatDateFunctionPointer.call(ejsScope, ...);
甜,謝謝。說得通。發佈的代碼僅僅是我真實的代碼的一個簡化,但是你非常清楚的重要部分! – Vadym