【问题标题】:Access Node Environment Variables in Jade file访问 Jade 文件中的节点环境变量
【发布时间】:2016-09-18 04:36:48
【问题描述】:

我试图弄清楚如何根据环境有选择地在翡翠文件中显示文本。我似乎无法弄清楚如何访问我的翡翠文件中的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

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

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

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

【问题讨论】:

标签: node.js express pug


【解决方案1】:

你想在jade模板中访问的任何东西都必须在从服务器发送下来的locals对象中。对于流程环境之类的东西,您可以在启动应用时正确执行此操作:

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

【讨论】:

  • 如果你不使用节点服务器,而只是使用 pug 编译静态 html 怎么办?
  • @Costa 包含在文档 (pugjs.org/api/getting-started.html) 中。您通过编译模板文件来创建编译函数,然后将变量传递给该文件。我会发布更新。
  • 我只是在我的 npm 脚本中使用了这一行:"watch-pages": "pug -O options.json -w pages/ --out _static-website/"。除此之外没有node.js代码。
  • @Costa 也许你应该围绕这个问题提出一个新问题?
猜你喜欢
  • 2023-03-14
  • 2016-05-30
  • 2020-01-24
  • 2016-04-28
  • 1970-01-01
  • 2012-01-30
  • 2015-06-18
  • 1970-01-01
  • 2018-12-05
相关资源
最近更新 更多