Как получить доступ к NODE_ENV в шаблоне Nunjucks? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть несколько шаблонных блоков Nunjucks, которые я хочу рендерить только в определенных средах. Я не могу получить доступ к переменной NODE_ENV, хотя. Я попробовал это:

{% if process.env.NODE_ENV === 'development' %}
  <div>rendering some stuff here</div>
{% endif %}

Это, похоже, не сработало для меня. Казалось, он понятия не имел, что такое process.env.NODE_ENV.

Возможно ли получить доступ к такой переменной среды в шаблоне?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я закончил тем, что делал в моем app.js

nunjucks.configure('views', {
  ...
}).addGlobal('NODE_ENV', process.env.NODE_ENV)

Это просто добавляет NODE_ENV как глобально доступную переменную в моем шаблоне Nunjucks.

0 голосов
/ 12 сентября 2018

Вы можете использовать один из следующих вариантов:

  1. Используйте addGlobal для определения функции, которая возвращает окружение

    var nunjucks  = require('nunjucks');
    var env = nunjucks.configure();
    
    env.addGlobal('$environment', () => process.env.NODE_ENV || 'development');
    var res = nunjucks.renderString(`{{$environment()}}`);
    
    console.log(res);
    
  2. Определить $environment as global .

  3. Установить res.locals.environment в промежуточном программном обеспечении

    const app = express();
    
    app.use(function (req, res, next) {
        res.locals.$environment = process.env.NODE_ENV || 'development';
        next();
    });
    
    // In nunjucks template
    {{$environment}}
    
...