如何在Nodejs中读取环境variables?

我正在尝试通过docker撰写环境文件。

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

我的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 

我能够读取我的app.js文件中的NODE_ENV

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

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

这是关键的第一行。

并使我的jwt令牌validation失败

 PEM_read_bio_PUBKEY failed 

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

解决scheme可能会因您的操作系统的换行样式而有所不同,但是我通过将换行符replace为\ n (使您的密钥为单行string)来解决此问题,然后通过\ n将\ nreplace为\ n

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

两个想法:

  1. 你如何存储variables? 你直接使用process.env,还是像dotenv ?

  2. 您是否尝试存储没有"-----BEGIN PUBLIC KEY-----""-----END PUBLIC KEY-----"行?