【问题标题】:How to append values to the PATH environment variable in NodeJS?如何将值附加到 NodeJS 中的 PATH 环境变量?
【发布时间】:2020-04-20 22:10:22
【问题描述】:

按照问题中建议的答案 -

Is it possible to permanently set environment variables?

我可以使用命令永久设置新的环境变量 -

spawnSync('setx', ['-m', 'MyDownloads', 'H:\\temp\\downloads'])

但现在我的目标是将新值附加到 PATH 环境变量中。

有可能吗?

【问题讨论】:

  • 这似乎是关于 Windows 和 Setx 命令的问题,而不是 Node、JavaScript 或 Electron。
  • 你是对的!我会修复它
  • 你想用我的回答吗?
  • 我不明白你的回答。在我的情况下,管理员权限不是问题。

标签: node.js windows electron setx


【解决方案1】:

为什么不直接获取环境变量然后追加到它上面呢?

const {spawnSync} = require("child_process");
const current_value = process.env.PATH;
const new_path_value = current_value.concat(";", "/some/new/path");

var result = spawnSync('setx', ['-m', 'PATH', new_path_value])

// STDOUT
var stdOut = result.stdout.toString();
console.log(stdOut)

// STDERR
var stdErr =  result.stderr.toString();

if(stdErr === '') {
    console.log('Successfully set environment variable')
} else {
    console.log(`ERROR: ${stderr}`)
}

更新“/some/new/path”并按照您提供的链接建议以管理员身份运行它,它应该可以工作。

【讨论】:

  • 你能从 process.env 获取当前环境变量吗?当你使用 console.log(current_value) 和 console.log(new_value) 时会发生什么?
  • 这是我的错,您的解决方案是正确的!非常感谢
  • 我需要将console.log(`ERROR: ${stderr}`)这一行改为console.log(`ERROR: ${stdErr}`)
【解决方案2】:

以管理员权限运行您的脚本:

  • 用管理员打开 cmd 或 PowerShell
  • 运行node your_script.js
  • 要附加PATH变量,可以设置值为:%PATH%;your_new_value here%PATH%获取旧值)

如果您使用电子应用程序运行,则需要管理员权限。

别忘了setx在窗口上运行

【讨论】:

  • 追加旧值和设置新值有什么区别?
  • @Paz 您可以添加 %PATH% 以获取旧值并附加新值
  • 好的,现在我明白了。这是我对 Electron 所做的第一件事。我知道 Windows 中的命令是 setx -m '%path%;NEW_VALUE' 但不适用于 Electron
  • @Paz 你用管理员权限运行它吗?
  • 当然。只有“-m”需要管理员权限,这意味着该变量将是系统变量而不是用户变量。这是容易的部分。我总是最终设置一个覆盖旧值而不是附加新值的新值。
【解决方案3】:

我无权修改我的注册表,我也不想调用诸如setx 之类的操作系统命令。

以下内容向 Windows PATH 添加了一个附加组件。然后我运行 Selenium,它使用新设置。

// Display current value of PATH
const current_value = process.env.PATH;
console.log("PREV VALUE:")
console.log(current_value)

// Add the additional entry
const addl_entry = String.raw`\my\new\path\component`
process.env["PATH"] = addl_entry + ";" + current_value

// Display the new value
console.log("NEW VALUE:")
console.log(process.env.PATH)

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 1970-01-01
    • 2021-03-05
    • 2017-10-31
    • 2023-03-29
    • 2020-06-22
    • 2016-06-08
    • 2020-03-07
    • 2017-02-21
    相关资源
    最近更新 更多