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

Ras*_*amm 5 node.js express pug

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

在我的index.jade文件中我正在做:

if process.env.NODE_ENV === 'development'
  h1 I am in development mode
else
  h1 I am not in development mode
Run Code Online (Sandbox Code Playgroud)

问题process.env.NODE_envundefined.

当我尝试做:h1 #{process.env}if声明之外,Jade输出[Object Object]到页面上.

当我尝试做:h1 #{process.env.NODE_ENV}if声明之外,Jade不会在页面上输出任何内容.

我没有动态渲染我的Jade文件,而是每当我启动服务器时,我都将它们构建为"静态"文件.

Pau*_*aul 10

您要在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
Run Code Online (Sandbox Code Playgroud)

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

#{env.NODE_ENV}
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

const pug = require('pug');

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

// Render a set of data
console.log(compiledFunction(process.env));
Run Code Online (Sandbox Code Playgroud)

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