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?


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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.