【问题标题】:How do you get cron job running Node.js script to read variables from .env file?如何让运行 Node.js 脚本的 cron 作业从 .env 文件中读取变量?
【发布时间】: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 作业是使用来自用户 michaelleecrontab -e 设置的,该用户在 Ubuntu 上拥有文件。

【问题讨论】:

    标签: javascript node.js ubuntu cron environment-variables


    【解决方案1】:

    我只是更改了 dotenv 配置上的路径,它对我有用

    const dotenv = require('dotenv');    
    dotenv.config({ path: __dirname + '/../.env' });
    

    【讨论】:

    • 非常好!我很高兴能帮助你! :)
    • 刚遇到这个问题,并应用此修复程序取得了巨大成功。谢谢!谁能解释为什么这是必要的?与手动运行相比,cron 在运行我的脚本时有何不同?
    【解决方案2】:

    我认为从.env 文件中取出内容并将它们加载到 JSON 文件中会不会那么令人头疼。然后,您只需 require JSON 文件并加载数据。每个 & 都不需要任何插件,它可以与 Cron 无缝工作。

    【讨论】:

    • 感谢@Colby 的建议!我试了一下,效果非常好。我担心将 API 密钥放在 JSON 文件中。然后我意识到,我只需要忽略它,让它永远不会被版本化。
    • 不客气,我很高兴它对你有用!我发现任何 Node 通常在使用 JSON 格式时效果最好。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2022-12-18
    • 2011-12-05
    • 2021-01-18
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多