Node.js 如何使用.env存储用于JWT的JSON密钥?

Node.js 如何使用.env存储用于JWT的JSON密钥?,node.js,json,environment-variables,jwt,google-apis-explorer,Node.js,Json,Environment Variables,Jwt,Google Apis Explorer,我正在使用google analytics api,需要传入一个json密钥,这是我用来制作JWT的。但是,我不希望从.json文件访问密钥,而是希望将密钥信息存储在.env文件中 我的问题是,我的.env变量无法读取,并且我不断收到关于信息无效的错误等 下面是一个类似于我的密钥结构的示例: { "type": "service_account", "project_id": "id", "private_key_id": "id", "private_key": "-----B

我正在使用google analytics api,需要传入一个json密钥,这是我用来制作JWT的。但是,我不希望从.json文件访问密钥,而是希望将密钥信息存储在.env文件中

我的问题是,我的.env变量无法读取,并且我不断收到关于信息无效的错误等

下面是一个类似于我的密钥结构的示例:

{
  "type": "service_account",
  "project_id": "id",
  "private_key_id": "id",
  "private_key": "-----BEGIN PRIVATE KEY-----\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\n-----END PRIVATE KEY-----\n",
  "client_email": "email",
  "client_id": "number",
  "auth_uri": "uri",
  "token_uri": "uri",
  "auth_provider_x509_cert_url": "url",
  "client_x509_cert_url": "url"
}
以下是如何将其写入my.env文件:

CREDS='{
  "type": "service_account",
  "project_id": "id",
  "private_key_id": "id",
  "private_key": "-----BEGIN PRIVATE KEY-----\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfads\nasdfasdfasdafsdfasdfasdfasdfasdfasdfasfd\nasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdf\n-----END PRIVATE KEY-----\n",
  "client_email": "email",
  "client_id": "number",
  "auth_uri": "uri",
  "token_uri": "uri",
  "auth_provider_x509_cert_url": "url",
  "client_x509_cert_url": "url"
}'
下面是我使用它的代码:

const keysEnvVar = process.env['CREDS'];

const keys = JSON.parse(keysEnvVar);

const authClient = new google.auth.JWT( email, auth.fromJSON(keys), null, ['https://www.googleapis.com/auth/analytics.readonly']);
有一种预感是“private_key”值写得不正确,它把事情搞砸了,但我真的不知道该怎么办


感谢您阅读

我知道我迟到了,但对于其他遇到相同错误的人(错误:错误:0909006C:PEM例程:get_name:no start line),可以在每一行中使用下面的“\n”,然后使用下面的命令按原样从.env文件中提取密钥

process.env.PRIVATE_KEY.replace(/\\n/g, '\n')
示例:

const keysEnvVar = process.env['CREDS'].replace(/\\n/g, '\n');

我知道我迟到了,但对于其他遇到相同错误的人(错误:错误:0909006C:PEM例程:get_name:no start line),可以对每一行使用下面的“\n”,然后使用下面的命令从.env文件中按原样提取密钥

process.env.PRIVATE_KEY.replace(/\\n/g, '\n')
示例:

const keysEnvVar = process.env['CREDS'].replace(/\\n/g, '\n');

环境变量不是JSON对象的最佳位置。为什么不把它放在它自己的文件中并要求()呢?如果不包括您遇到的具体错误,所有提供建议的人都只是猜测。您可以看到此链接并使用.env文件env vars,而不是JSON对象的最佳位置。为什么不把它放在它自己的文件中并要求()呢?如果不包括您遇到的具体错误,所有提供建议的人都只是猜测。您可以查看此链接并使用.env文件