如何使用脚本 [Node.js] 设置环境变量
How to set Environment variables using Script [Node.js]
如何使用 node.js 中的脚本设置环境变量?
我有脚本可以给我部署的 solidity 合约地址,我必须在我的 .env 文件中使用它(我正在使用 dotenv 模块)。
我试图找到更新或添加新生成的合同值到 .env 文件的方法,但没能得到太多。
有什么方法可以更新或添加从脚本获得的值到 .env 文件?
我不太明白你想做什么,但通常环境变量是为运行时设置的。当您的应用程序为 运行.
时,您不应更新环境变量
对于 dotenv (https://www.npmjs.com/package/dotenv),您创建一个文件.env
将一些变量放在那里:
FOO=bar
BAZ=bob
然后要求并使用您的 .env 文件
require('dotenv').config();
console.log(process.env.FOO);
// bar
没有任何库,您也可以像这样直接向节点脚本提供环境变量
USER_ID=abc USER_PASSWORD=def node app.js
然后像这样再次使用它:
console.log(process.env.USER_ID);
// abc
您不应将 .env
包含在您的版本控制存储库中(将其添加到您的 .gitignore
文件)。
在 JavaScript 中,您可以使用任一环境变量,或者如果未定义,请添加其他内容,例如:
const yourVariable = process.env.yourVariable || 'Get stuff done';
如果 process.env.yourVariable 未定义,应用程序将使用“Get stuff done”字符串代替。
而且我认为您要求的是我打赌您不应该使用 env 变量做的事情。无论如何,这是我发现的黑客攻击,可能应该有效。您可以像这样在运行时设置新的 env 变量(我还没有尝试过),因为环境变量旨在从代码外部而不是内部设置。但是,在某些用例中,您可能想要使用它,启动子进程或测试或其他任何东西。
process.env['NODE_ENV'] = 'production';
如果你想在运行时将值写入.env,你需要读取并附加到文件,这是全新的故事。祝你好运。
你可以这样做:
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);
});
请遵循此 link https://www.npmjs.com/package/dotenv ,它提供了使用 dotenv npm 包集成环境变量的清晰方法。
如何使用 node.js 中的脚本设置环境变量?
我有脚本可以给我部署的 solidity 合约地址,我必须在我的 .env 文件中使用它(我正在使用 dotenv 模块)。
我试图找到更新或添加新生成的合同值到 .env 文件的方法,但没能得到太多。
有什么方法可以更新或添加从脚本获得的值到 .env 文件?
我不太明白你想做什么,但通常环境变量是为运行时设置的。当您的应用程序为 运行.
时,您不应更新环境变量对于 dotenv (https://www.npmjs.com/package/dotenv),您创建一个文件.env
将一些变量放在那里:
FOO=bar
BAZ=bob
然后要求并使用您的 .env 文件
require('dotenv').config();
console.log(process.env.FOO);
// bar
没有任何库,您也可以像这样直接向节点脚本提供环境变量
USER_ID=abc USER_PASSWORD=def node app.js
然后像这样再次使用它:
console.log(process.env.USER_ID);
// abc
您不应将 .env
包含在您的版本控制存储库中(将其添加到您的 .gitignore
文件)。
在 JavaScript 中,您可以使用任一环境变量,或者如果未定义,请添加其他内容,例如:
const yourVariable = process.env.yourVariable || 'Get stuff done';
如果 process.env.yourVariable 未定义,应用程序将使用“Get stuff done”字符串代替。
而且我认为您要求的是我打赌您不应该使用 env 变量做的事情。无论如何,这是我发现的黑客攻击,可能应该有效。您可以像这样在运行时设置新的 env 变量(我还没有尝试过),因为环境变量旨在从代码外部而不是内部设置。但是,在某些用例中,您可能想要使用它,启动子进程或测试或其他任何东西。
process.env['NODE_ENV'] = 'production';
如果你想在运行时将值写入.env,你需要读取并附加到文件,这是全新的故事。祝你好运。
你可以这样做:
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);
});
请遵循此 link https://www.npmjs.com/package/dotenv ,它提供了使用 dotenv npm 包集成环境变量的清晰方法。