如何让运行 Node.js 脚本的 cron 作业从 .env 文件中读取变量?
Posted
技术标签:
【中文标题】如何让运行 Node.js 脚本的 cron 作业从 .env 文件中读取变量?【英文标题】:How do you get cron job running Node.js script to read variables from .env file? 【发布时间】:2017-10-25 05:26:12 【问题描述】:我目前有一个运行 Node.js 脚本的 cron 作业设置。 Node.js 脚本使用dotenv 包来读取具有一些API 密钥的.env
文件。
当我从命令行运行 Node.js 脚本时,变量会从 .env
文件中正确读取并与我的 Node.js 脚本一起使用。
但是当 cron 运行 Node.js 脚本时,我尝试设置的变量返回未定义。
00 05 * * * /home/michaellee/.nvm/versions/node/v6.10.0/bin/node /home/michaellee/index.js >> /home/michaellee/output.log
.env
文件与index.js
文件位于同一级别。
cron 作业是使用来自用户 michaellee
的 crontab -e
设置的,该用户在 Ubuntu 上拥有文件。
【问题讨论】:
【参考方案1】:我只是更改了 dotenv 配置上的路径,它对我有用
const dotenv = require('dotenv');
dotenv.config( path: __dirname + '/../.env' );
【讨论】:
非常好!我很高兴能帮助你! :) 刚遇到这个问题,并应用此修复程序取得了巨大成功。谢谢!谁能解释为什么这是必要的?与手动运行相比,cron 在运行我的脚本时有何不同?【参考方案2】:我认为从.env
文件中取出内容并将它们加载到 JSON 文件中会不会那么令人头疼。然后,您只需 require
JSON 文件并加载数据。每个 & 都不需要任何插件,它可以与 Cron 无缝工作。
【讨论】:
感谢@Colby 的建议!我试了一下,效果非常好。我担心将 API 密钥放在 JSON 文件中。然后我意识到,我只需要忽略它,让它永远不会被版本化。 不客气,我很高兴它对你有用!我发现任何 Node 通常在使用 JSON 格式时效果最好。祝你好运!以上是关于如何让运行 Node.js 脚本的 cron 作业从 .env 文件中读取变量?的主要内容,如果未能解决你的问题,请参考以下文章
你怎么得到运行Node.js脚本的cron作业从.env文件中读取变量?
运行 cron 作业 (Node.js) 时如何在 Amazon Elastic Beanstalk 中设置环境变量?