如何使用脚本设置环境变量 [Node.js]

Jig*_*iya 0 javascript node.js solidity

如何使用node.js中的脚本设置环境变量?

我有一个脚本为我提供了部署的 Solidity 合约地址,我必须在我的 .env 文件中使用它(我正在使用 dotenv 模块)。

我尝试找出方法来更新或添加新生成的合约值到 .env 文件中,但没有得到太多结果。

有什么办法可以更新或添加我从脚本获得的值到 .env 文件吗?

Shn*_*igi 5

我不太明白你想要做什么,但通常环境变量是为运行时设置的。您不应在应用程序运行时更新环境变量。

对于 dotenv ( https://www.npmjs.com/package/dotenv ),您创建一个文件.env并在其中放置一些变量:

FOO=bar
BAZ=bob
Run Code Online (Sandbox Code Playgroud)

然后需要并使用您的 .env 文件

require('dotenv').config();

console.log(process.env.FOO);
// bar
Run Code Online (Sandbox Code Playgroud)

如果没有任何库,您也可以直接向节点脚本提供环境变量,如下所示

USER_ID=abc USER_PASSWORD=def node app.js
Run Code Online (Sandbox Code Playgroud)

再次使用它,如下所示:

console.log(process.env.USER_ID);
// abc
Run Code Online (Sandbox Code Playgroud)

您不应将 包含.env在您的版本控制存储库中(将其添加到您的.gitignore文件中)。

在 JavaScript 中,您可以使用环境变量,或者如果未定义,则添加其他内容,例如:

const yourVariable = process.env.yourVariable || 'Get stuff done';
Run Code Online (Sandbox Code Playgroud)

如果未定义 process.env.yourVariable,应用程序将使用“Get stuff done”字符串代替。

我认为你所要求的是我打赌你不应该对环境变量做的事情。无论如何,这是我发现的一个黑客,并且可能应该有效。您可以像这样在运行时设置新的环境变量(我没有尝试过),因为环境变量是从代码外部而不是内部设置的。然而,在某些用例中,您可能想要使用它,启动子进程或测试或其他什么。

process.env['NODE_ENV'] = 'production';
Run Code Online (Sandbox Code Playgroud)

如果您想在运行时将值写入 .env 中,则需要读取并附加到该文件,这是一个全新的故事。祝你好运。