【问题标题】:Node.JS environment variables are not set?Node.JS 环境变量没有设置?
【发布时间】:2016-03-20 21:38:11
【问题描述】:

我的 Node.JS .env 中有一些环境变量,包括 AUTH0_CLIENT_ID 和 AUTH0_CLIENT_SECRET。

我向客户端添加了 auth0 支持:

var jwt = require('express-jwt');
var authenticate = jwt({
  secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
  audience: process.env.AUTH0_CLIENT_ID
});

当使用 $node Experiment.js 或从 npm 运行我的实验时 [在 package.json 中的脚本中添加相应条目后,我收到错误:

buffer.js:139
throw new TypeError('must start with number, buffer, array or string');

我的猜测是环境变量没有被拾取。我做错了什么,或/和我应该检查什么?

【问题讨论】:

  • 你是在服务器还是本地运行这个?
  • 在此之前您应该在系统中设置环境变量:)
  • 你用过this吗?

标签: javascript node.js auth0


【解决方案1】:

您将它们放入文件中并不意味着它们已被加载。您需要将它们传递给 NodeJS。要么使用一些包来管理配置文件和环境变量(nconfdotenv),要么在运行服务时直接传递(这更好,因为秘密应该保存在出于安全原因的任何类型的文件)。如果您选择第二个,则很大程度上取决于您正在运行的系统。如果你使用 Windows,你应该先设置环境变量(在 cmd 中):

set AUTH0_CLIENT_SECRET=test
node app.js

在基于 Unix 的系统上,您可以直接传递它:

AUTH0_CLIENT_SECRET=test node app.js

希望有帮助:)

【讨论】:

  • 我不确定您对 set 的使用是否适用于 bash。我确实导出了,并且确实正确设置了变量。 node 和/或 npm 会自动从当前目录加载 .env 文件吗?
  • 我查看了文档。确实,我需要手动 require('dotenv').load();使用 .env。知道了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 2018-07-30
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多