我正在尝试通过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
我不知道如何解决这个问题。任何人都可以帮我吗?非常感谢!
答案 0 :(得分:1)
此解决方案可能因您的操作系统的换行符风格而有所不同,但我通过将 \ n 替换换行符(这使您的键成为单行字符串)解决了这个问题,然后将其读取服务器将\ n替换为\ n
process.env.RSA_PUBLIC.replace(/\\n/g, '\n')
答案 1 :(得分:1)
两个想法:
如何存储变量?您是直接使用process.env,还是使用dotenv?
您是否尝试在没有"-----BEGIN PUBLIC KEY-----"
和"-----END PUBLIC KEY-----"
行的情况下进行存储?