2011-10-19 9 views
16

Quiero establecer una variable de entorno al ejecutar un programa a través de child_process.exec. es posible?NodeJS establecer la variable de entorno para el ejecutivo

He intentado establecer el env así:

exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);}); 

pero el mensaje resultante dijo FOO no existía.

Respuesta

37

Tiene que pasar un objeto de opciones que incluye la clave env cuyo valor es en sí mismo un objeto de pares de valores clave.

exec('echo $FOO', {env: {'FOO': 'ah'}}, function (error, stdout, stderr) 
{ 
    console.log(stdout, stderr, error); 
}); 
+28

Cualquiera que use este debe tomar en cuenta que la especificación de las variables de entorno de esta manera reemplaza el conjunto _entire_ de variables de entorno, incluyendo * * 'cualquier path' que de otro modo podrían existir. Por lo tanto, si intentas establecer una variable env y de repente obtienes errores sobre el comando que estás tratando de ejecutar, este es el motivo. Esto no está claro en absoluto en la documentación y me dejó rascándome la cabeza un poco. Si desea agregar variables env y mantenerse independiente de la plataforma, puede hacer una copia de 'process.env', aplicar sus cambios a eso y pasarlo a' child_process.exec'. – DanielSmedegaardBuus

+1

También puede actualizar 'process.env' direclty. Ej: 'process.env [" PATH "] + = path.delimiter + process.cwd() + path.sep +" node_modules "+ path.sep +" .bin "' – mems

Cuestiones relacionadas