访问Jade文件中的节点环境变量

时间:2016-05-20 19:44:40

标签: node.js express pug

我试图弄清楚如何根据环境选择在玉器文件中显示文本。我似乎无法弄清楚如何访问我的jade文件中的NODE_ENV变量。

在我正在执行的index.jade文件中:

if process.env.NODE_ENV === 'development'
  h1 I am in development mode
else
  h1 I am not in development mode

问题是process.env.NODE_envundefined

当我尝试在h1 #{process.env}语句之外执行if时,Jade会将[Object Object]输出到页面上。

当我尝试在h1 #{process.env.NODE_ENV}语句之外执行:if时,Jade不会在页面上输出任何内容。

我不是在飞行中渲染我的Jade文件,而是将它们全部构建为"静态"我启动服务器时的文件。

1 个答案:

答案 0 :(得分:9)

您要在jade模板中访问的任何内容都必须位于从服务器发送的本地对象中。对于像流程环境这样的东西,您可以在启动应用时立即执行此操作:

const express = require('express');
var app = express();

app.locals.env = process.env;  // though you might prefer to clone this instead of setting them equal

然后在你的玉石模板中你可以做到

#{env.NODE_ENV}

<强>更新

添加直接使用,而不是在快速服务器中。

const pug = require('pug');

// Compile the source code
const compiledFunction = pug.compileFile('template.pug');

// Render a set of data
console.log(compiledFunction(process.env));

这将记录它,但当然您可以使用fs实用程序轻松地将其写入HTML文件。