node.js - 是否可以永久设置环境变量?

标签 node.js

我需要一种永久设置环境变量的方法。我可以暂时只在 Windows 中使用此功能,但理想情况下我想要一个与操作系统无关的解决方案。据我所知,Node 只会为当前进程/子进程设置 var。我想要的可能吗?

最佳答案

可能可以使用setxexport,尽管不确定所需的含义/权限(我假设在 Windows 中需要 UAC 碰撞,而在 Linux 中则需要 sudo)。这是最好的猜测:

var exec = require('child_process').exec;

// Add FOO to global environment with value BAR
//   setEnv('FOO', 'BAR', callback)
// Append /foo/bar to PATH
//   setEnv('PATH', '+=;/foo/bar', callback)
function setEnv(name, value, cb) {
  if (!name) throw new Error('name required.');
  if (typeof value === 'undefined') throw new Error('value required.');

  var cmd;
  if (value.indexOf('+=') === 0) value = process.env[name] + value.substring(2);
  value = value.indexOf(' ') > -1 ? `"${value}"` : value;

  switch (process.platform) {
    case 'linux': cmd = `export ${name}=${value}`; break;
    case 'win32': cmd = `setx ${name} ${value} /m"; break;
    default: throw new Error('unsupported platform.'); break;
  }

  exec(cmd, cb);
}

我应该提到这确实不理想;我建议将它们定义为执行任务的一部分,或者考虑使用类似 dotenv 的内容。 .

关于node.js - 是否可以永久设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519452/

相关文章:

javascript - 启动 Framework7 时出现错误 'Dom7 is not defined' - Vue app with Webpack

node.js - WebStorm建议我翻转if-else,这样做有什么好处?

node.js - mongodb 连接问题 "Cannot call method ' 更新'未定义"

node.js - Sails.js 的项目类型未进入 Webstorm

mysql - 如何获取成员(member)的帖子?

javascript - 区分 Imgur 图库中的相册和图像

node.js - 由于 crypto.DEFAULT_ENCODING ='binary', Node 6 升级导致 aws-sdk 出现 SignatureDoesNotMatch 错误

node.js - websocket.io 正在引发未定义错误的方法

javascript - 无法从 express.js 加载静态文件

node.js - 如何调试此 Webpack 错误 - 来自 Terser 的 bundle.js 中的错误