Node.JS环境变量没有设置?

Node.JS environment variables are not set?

我的 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');

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

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

set AUTH0_CLIENT_SECRET=test
node app.js

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

AUTH0_CLIENT_SECRET=test node app.js

希望对您有所帮助:)