【发布时间】:2020-09-25 03:14:36
【问题描述】:
我想在运行节点脚本之前从文件中加载一些环境变量,以便脚本可以访问它们。但是,我不希望在脚本执行完成后在我的 shell 中设置环境变量。
我可以像这样加载环境变量:
export $(cat app-env-vars.txt | xargs) && node my-script.js
但是,在命令运行之后,所有的环境变量现在都在我的 shell 中设置了。
我问这个问题来回答它,因为我想出了一个解决方案,但在 SO 上找不到答案。
【问题讨论】:
-
改用
dotenv运行您的脚本。 -
类似
node -r dotenv/config my-script.js dotenv_config_path=app.env,我相信。 -
@chepner 好建议。我知道dotenv。在这种情况下,我有充分的理由不使用它。另外,我想要一个通用的解决方案,可以在这个特定示例之外使用。
-
请记住,解析
.env文件的规则不与shell 的解析规则相同。来自github.com/motdotla/dotenv 的示例:必须编写像FOO= some value这样的行FOO=" some value"才能让shell 正确处理它。 shell 也不会将\n扩展为换行符。 -
@chepner 有价值的说明。谢谢。我并没有真正尝试专门针对
.env格式;只是意味着它是一个包含 shell 样式环境变量的文件。我相应地重命名了示例中的文件。
标签: node.js linux bash shell zsh