如何在Nunjucks模板中访问NODE_ENV?

时间:2018-09-12 05:14:00

标签: node.js express templates nunjucks

我有一些Nunjucks模板块,我只想在某些环境中渲染。我似乎无法访问NODE_ENV变量。我尝试过:

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

这似乎对我不起作用。似乎不知道process.env.NODE_ENV是什么。

是否可以在模板中访问这样的环境变量?

2 个答案:

答案 0 :(得分:1)

您可以使用以下变体之一:

  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定义为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}}
    

答案 1 :(得分:1)

我最终在app.js

中执行了以下操作
nunjucks.configure('views', {
  ...
}).addGlobal('NODE_ENV', process.env.NODE_ENV)

这只是将NODE_ENV添加为我的Nunjucks模板中的全局可访问变量。