Wie werden Werte an die Umgebungsvariable PATH in NodeJS angehängt?

8

Nach der in der Frage vorgeschlagenen Antwort -

Ist es möglich, Umgebungsvariablen dauerhaft festzulegen?

Ich konnte mit dem Befehl - dauerhaft neue Umgebungsvariablen setzen -

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

Jetzt ist es mein Ziel, neue Werte an die Umgebungsvariable PATH anzuhängen.

Ist es möglich?

Paz
quelle
Dies scheint eine Frage zu Windows und dem Setx-Befehl zu sein, nicht zu Node, JavaScript oder Electron.
Avejidah
Sie haben Recht! Ich werde es reparieren
Paz
Versuchen Sie meine Antwort zu verwenden?
Hong4RC
Ich habe deine Antwort nicht verstanden. Administratorrechte sind in meinem Fall nicht das Problem.
Paz

Antworten:

1

Warum erhalten Sie nicht einfach die Umgebungsvariable und hängen sie dann an?

Dh

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}`)
}

Aktualisieren Sie "/ some / new / path" und führen Sie dies als Administrator aus, wie der von Ihnen angegebene Link vorschlägt, und es sollte funktionieren.

marksy_91
quelle
Es hat bei mir nicht funktioniert
Paz
Können Sie die aktuelle Umgebungsvariable aus process.env beziehen? Was passiert, wenn Sie console.log (aktueller_Wert) und console.log (neuer_Wert) verwenden?
marksy_91
Es war mein schlechtes, deine Lösung war richtig! Vielen Dank
Paz
2

Führen Sie Ihr Skript mit der Administratorberechtigung aus:

  • Öffnen Sie cmd oder PowerShell mit admin
  • Lauf node your_script.js
  • Um eine PATHVariable anzuhängen , können Sie den folgenden Wert festlegen: %PATH%;your_new_value here( %PATH%alten Wert abrufen)

Wenn Sie mit der Electron App arbeiten, sollten Sie eine Administratorberechtigung benötigen.

Vergessen Sie nicht, setxam Fenster zu laufen

Geben Sie hier die Bildbeschreibung ein

hong4rc
quelle
Was ist der Unterschied zwischen dem Anhängen an einen alten Wert und dem Festlegen eines neuen Werts?
Paz
@Paz Sie können hinzufügen %PATH%, um den alten Wert zu erhalten und Ihren neuen Wert anzuhängen
hong4rc
Ok, jetzt verstehe ich. Das war das erste, was ich mit Electron gemacht habe. Ich weiß, dass der Befehl in Windows setx -m '% path%; NEW_VALUE' ist, aber nicht mit Electron funktioniert
Paz
@Paz führen Sie es mit Administratorberechtigung aus?
Hong4RC
Na sicher. Die Administratorberechtigung ist nur für "-m" erforderlich. Dies bedeutet, dass die Variable eine Systemvariable und keine Benutzervariable ist. Das ist der einfache Teil. Am Ende setze ich immer einen neuen Wert, der den alten überschreibt, anstatt einen neuen Wert anzuhängen.
Paz