如何在Nunjucks模板中访问NODE_ENV?

5

我有一些Nunjucks模板块,只想在特定环境下进行渲染。然而我好像无法访问NODE_ENV变量。我尝试了这个:

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

不过,这对我似乎没用。它好像并不知道process.env.NODE_ENV是什么。

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


你的环境变量在哪里设置以及如何设置?也许在你的情况下它可能未定义,那么你应该将其设置为默认值。看一下这个链接:https://github.com/JohnnyDevNull/express-api-typescript-template/blob/master/src/server.ts 以及这个链接:https://github.com/JohnnyDevNull/express-api-typescript-template/blob/master/package.json,我在其中设置了我的环境变量。 - JohnnyDevNull
它被设置在我的 app.js 中。 - Jake Wilson
2个回答

4
我在我的app.js中最终做了以下操作。
nunjucks.configure('views', {
  ...
}).addGlobal('NODE_ENV', process.env.NODE_ENV)

这只是在我的Nunjucks模板中添加了一个全局可访问的变量NODE_ENV

1
您可以使用以下其中一种变量:

  1. Use addGlobal to define function which returns environment

    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. Define $environment as global.

  3. Set res.locals.environment in middleware

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接