Изменить: ошибка в коде исправлена.
Я использую стек MEANJS, который по умолчанию поставляется с файлом default.js с некоторой информацией, как показано ниже:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
}
};
который появляется в шаблоне приложений через движок шаблонов swig. Например:
<title>{{title}}</title>
печатает:
<title>My App Title</title>
Изменение этого значения также работает так, как ожидалось.
Если, однако, я добавляю свою собственную переменную, она ее не распознает, поэтому:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title: 'My Apps New Title',
}
};
а затем измените представление на:
<title>{{new_title}}</title>
печатает:
<title></title>
Эти переменные зарегистрированы/переданы где-то еще, что я пропустил?
Переменная не распознается, потому что, несмотря на то, что она определена в вашем файле конфигурации, вы должны установить ее в объекте экспресс-локалей.
Если вы используете файл конфигурации express.js
, расположенный в /config/lib/
, вы можете найти этот блок кода:
/**
* Initialize local variables
*/
module.exports.initLocalVariables = function (app) {
// Setting application local variables
app.locals.title = config.app.title;
app.locals.description = config.app.description;
if (config.secure && config.secure.ssl === true) {
app.locals.secure = config.secure.ssl;
}
app.locals.keywords = config.app.keywords;
app.locals.googleAnalyticsTrackingID = config.app.googleAnalyticsTrackingID;
app.locals.facebookAppId = config.facebook.clientID;
app.locals.jsFiles = config.files.client.js;
app.locals.cssFiles = config.files.client.css;
app.locals.livereload = config.livereload;
app.locals.logo = config.logo;
app.locals.favicon = config.favicon;
...
};
Вот где это происходит. Чтобы ваша переменная конфигурации была доступна для использования в шаблонах приложений, просто добавьте строку:
app.locals.new_title= config.app.new_title;
Для получения дополнительной информации о объекте экспресс-приложений, вы можете проверить официальную экспресс-документацию здесь.
Это объект JSON. Вы использовали =
вместо :
в своем коде.
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title : 'My Apps New Title' //Here
}
};