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

时间:2018-04-13 06:53:37

标签: javascript node.js solidity

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

我有脚本给我部署的可靠性合同地址,我必须在我的.env文件中使用它(我使用的是dotenv模块)。

我试图找出更新或将新生成的合同价值添加到.env文件但无法获得更多的方法。

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

2 个答案:

答案 0 :(得分:1)

我不太了解你要做的事情,但通常会为运行时设置环境变量。当你的应用运行时,你不应该更新env变量。

对于dotenv(https://www.npmjs.com/package/dotenv),您创建了一个文件.env,其中包含一些变量:

FOO=bar
BAZ=bob

然后要求并使用.env文件

require('dotenv').config();

console.log(process.env.FOO);
// bar

没有任何库,您也可以直接向节点脚本提供env变量,如

USER_ID=abc USER_PASSWORD=def node app.js

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

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

const yourVariable = process.env.yourVariable || 'Get stuff done';

我认为你要求的是我打赌你不应该对env变量做些什么。无论如何这是我发现的黑客攻击,也许应该可行。您可以在运行时设置新的env变量(我还没有尝试过),因为环境变量是从代码外部设置的,而不是在内部。但是,可能存在您希望使用此用例,启动子进程或测试或任何用途的用例。

process.env['NODE_ENV'] = 'production';

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

答案 1 :(得分:0)

你可以这样做:

     fs.readFile("./.env", 'utf8', function (err, data) {
          if (err) {
            return console.log(err);
          };
          let envVar = process.env.envVar ;
          let re = new RegExp(envVar , "g");
          let result = data.replace(re, `${newEnvVarValue}`);
          console.log(result)

          fs.writeFile("./.env", result, 'utf8', function (err) {
            if (err) return console.log(err);
          });