node.js - 在 Jade 文件中访问 Node 环境变量

标签 node.js express pug

我想弄清楚如何根据环境有选择地在 jade 文件中显示文本。我似乎无法弄清楚如何访问我的 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] 到这页纸。

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

我不是在运行时渲染我的 Jade 文件,而是在每次启动服务器时都将它们构建为“静态”文件。

最佳答案

任何你想在 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

然后在你的jade模板中你可以做

#{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 文件。

关于node.js - 在 Jade 文件中访问 Node 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354706/

相关文章:

javascript - 如何使用jade和express在脚本标签中动态生成javascript

asp.net-mvc - 是否有 ASP.NET MVC 的 Jade 模板引擎?

node.js - 为什么我的 lambda 函数没有按预期工作?

javascript - 无法连接到本地 Node.js 安全 WebSocketServer

javascript - 将连接对象传递给模块更好还是在模块本身内进行连接更好?

node.js - Jade/Pug - 附加到类名

node.js - 如何将电子表格.values.batchUpdate 与 Google Cloud Functions 和 NodeJS 以及 'googleapis' 模块结合使用

javascript - 了解 Express.js 中的中间件和路由处理程序

node.js - 连接到 AWS Postgres SequelizeConnectionError : password authentication failed

node.js - 获取渲染名称jade