¿Cómo agregar valores a la variable de entorno PATH en NodeJS?


8

Siguiendo la respuesta sugerida en la pregunta:

¿Es posible establecer permanentemente variables de entorno?

Pude establecer nuevas variables de entorno permanentemente con el comando -

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

Pero ahora mi objetivo es agregar nuevos valores a la variable de entorno PATH.

¿Es posible?


Esto parece una pregunta sobre Windows y el comando Setx, no Node, JavaScript o Electron.
avejidah

¡Tienes razón! Lo arreglaré
Paz

¿Estás tratando de usar mi respuesta?
hong4rc

No entendí tu respuesta. El permiso de administrador no es el problema en mi caso.
Paz

Respuestas:


1

¿Por qué no solo obtiene la variable de entorno y luego la agrega?

Es decir

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

Actualice "/ some / new / path" y ejecútelo como administrador como sugiere el enlace que proporcionó y debería funcionar.


No funcionó para mí
Paz

¿Puede obtener la variable de entorno actual de process.env? ¿Qué sucede cuando console.log (current_value) y console.log (new_value)?
marksy_91

Fue mi mal, su solución fue correcta! muchas gracias
Paz

2

Ejecute su script con el permiso de administrador:

  • Abra cmd o PowerShell con admin
  • correr node your_script.js
  • Para agregar PATHvariable, puede establecer el valor es: %PATH%;your_new_value here( %PATH%obtener el valor anterior)

Si ejecuta con la aplicación de electrones, debe requerir permiso de administrador.

No olvides setxcorrer en la ventana

ingrese la descripción de la imagen aquí


¿Cuál es la diferencia entre agregar un valor antiguo y establecer un valor nuevo?
Paz

@Paz Puede agregar %PATH%para obtener un valor antiguo y agregar su nuevo valor
hong4rc

Bueno, ahora lo entiendo. Eso fue lo primero que hice con Electron. Sé que el comando en Windows es setx -m '% path%; NEW_VALUE' pero no funciona con Electron
Paz

@Paz, ¿lo ejecutas con permiso de administrador?
hong4rc

por supuesto. el permiso de administrador solo se requiere para el "-m", lo que significa que la variable será la variable del sistema y no la variable del usuario. Esa es la parte fácil. Siempre termino estableciendo un nuevo valor que anula el anterior en lugar de agregar un nuevo valor.
Paz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.