¿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?

Paz
fuente
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.

marksy_91
fuente
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í

hong4rc
fuente
¿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