如何在Nodejs中读取环境变量?

时间:2017-03-25 05:50:07

标签: node.js docker docker-compose jwt

我正在尝试通过docker compose读取环境文件。

我的问题是我的代码只读取变量值的第一行。

我的test.env

NODE_ENV=development
## Not the actual key ##
RSA_PUBLIC=-----BEGIN PUBLIC KEY-----
CIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyRaUPVDIx3e1d/qadcNc
D5TfmAfjCKlTajQPEitF8tNtQKRQc9yZqJjkNwtvctlxmkBmfot5dPqW/nAZhfse
AAY5AKnAPAHrOLrzrGWvXE1NkjuONZq9cTqWludyZp7jH0md1q/D7shZMwL2hEee
gaaM5CWH7nIZ6CASDA9K46NJYyoXw4/sZsUtuuKbUP3W1LlJcaBFIpRRKkv2dEdd
ddqN8yHjkjKNtHi0UtRCjxA6dOuUdMvTiTHiycGwoC6sap0THF4lWHBZb/GXFaeD
adce7iDq5bhbMNT3YfXHlq3MMMJSCJltnVS7DArij/Xf6vF/6chvlI4S9iIZNped
FEEDAAEE
-----END PUBLIC KEY-----

我的docker-compose

web:
    build: .   
    env_file:
      - test.env
    //more

我能够使用

在我的NODE_ENV文件中阅读app.js

console.log(process.env.NODE_ENV) ==>输出development

但是console.log(process.env.RSA_PUBLIC) ==>仅输出-----BEGIN PUBLIC KEY-----

这是密钥的第一行。

并使用

使我的jwt令牌验证失败
PEM_read_bio_PUBKEY failed

我不知道如何解决这个问题。任何人都可以帮我吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

此解决方案可能因您的操作系统的换行符风格而有所不同,但我通过将 \ n 替换换行符(这使您的键成为单行字符串)解决了这个问题,然后将其读取服务器将\ n替换为\ n

process.env.RSA_PUBLIC.replace(/\\n/g, '\n')

答案 1 :(得分:1)

两个想法:

  1. 如何存储变量?您是直接使用process.env,还是使用dotenv

  2. 您是否尝试在没有"-----BEGIN PUBLIC KEY-----""-----END PUBLIC KEY-----"行的情况下进行存储?