Nunjucks模板中如何访问NODE_ENV?

How do access NODE_ENV in Nunjucks template?

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

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

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

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

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

  1. 使用addGlobal定义returns环境

    的函数
    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. 定义 $environmentglobal.

  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}}
    

我最终在 app.js

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

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