将 .env 文件与发布二进制文件一起使用

Using .env file with release binary

提问人:Antonin GAVREL 提问时间:11/3/2023 最后编辑:Antonin GAVREL 更新时间:11/3/2023 访问量:61

问:

当使用 构建 rust 二进制文件时,二进制文件在内部完美生成,但是我收到一条消息,说它无法加载环境变量。cargo build --release/target/release

然后,我将.env文件从项目复制到同一目录,但仍然收到错误。

在代码中,它看起来像这样:

use dotenv::dotenv;

async fn main() -> anyhow::Result<()> {
    dotenv().ok();

    let my_env_var= std::env::var("MY_ENV_VAR").expect("MY_ENV_VAR must be set.");
    ...
}

当然,它与 .cargo run

如何运行生成的二进制文件并确保正确读取 .env 文件?(使用 Mac mini)

注意:我用来打开二进制文件open {binary name}

macOS Rust 版本 dotenv .env

评论

0赞 freakish 11/3/2023
它可能在当前工作目录中搜索文件?
0赞 Antonin GAVREL 11/3/2023
这就是为什么我在工作目录中添加了 .env 文件,但它不起作用
0赞 Antonin GAVREL 11/3/2023
.env 文件中的每一行都如下所示MY_ENV_VAR = "sometext"
4赞 freakish 11/3/2023
我不确定有什么作用(我不是 macos 人),但是既然 Rust 生成了一个二进制文件,您不能直接运行它吗?只是在终端里做?看起来这扰乱了工作目录,也许吧?open{binary name}open
0赞 Antonin GAVREL 11/3/2023
没有看到您的评论,我确实尝试直接打开它,它实际上正在工作!好吧,无论如何,谢谢,您可能想将其发布为答案。

答:

1赞 freakish 11/3/2023 #1

正如我在评论中所说,我认为工作目录混乱了。我不知道为什么,以及它到底做了什么(一些 macos 专家可以详细说明这一点),但这应该无关紧要。这是因为 Rust 生成了一个可执行的二进制文件。这意味着你不需要这样做open

open {binary name}

你可以简单地做

{binary name}

在终端中,它应该可以正常工作。