在node.js中设置一个环境variables,然后在terminal中使用它?
那么我想在使用node.js执行js文件的过程中添加一个环境variables。
类似于:process.env ['VARIABLE'] ='value';
我正在使用terminal运行使用模块的js文件,我可以设置variables,然后在js文件执行期间使用它,但我想设置variables使用“process.env”,然后当执行结束,我想用在terminal,或在另一个JS进程。
我知道可以使用child_process.exec,并使用SET(Windows)或EXPORT(Mac和Linux),但只是问如何可能,可能是可能的,或者使用哪个devise或过程来添加它,只是使用“process.env”。
在此先感谢,伙计们。
unix权限模型将不允许subprocess(您的node.js应用程序)更改其父进程(terminal内运行的shell)的环境。 同样适用于当前的工作目录,有效的uid,有效的gid以及其他一些进程参数。 AFAIK没有直接的方法来做你所要求的。 您可以执行诸如打印命令将其设置为stdout的方式,以便用户可以轻松地将该shell命令复制/粘贴到其terminal中,但最好的办法是在单独的问题中解释您要解决的更广泛的问题,并让人告诉你可行的方法来完成,而不是试图改变父进程的环境。
一个可能的解决方法是像这样从terminal运行你的节点程序:
export SOME_ENV_VAR="$(node app.js)"
并有app.js
通过process.stdout.write
打印所需的值。
第二个黑客将是一个包装shell脚本沿着这些线:
app.sh
#!/bin/bash echo app.sh running with SOME_ENV_VAR=${SOME_ENV_VAR} echo "app.sh running app.js" export SOME_ENV_VAR="$(node app.js)" exec /bin/bash
app.js
console.log("Some Value at " + Date());
在terminal中的交互式shell中运行
echo $SOME_ENV_VAR exec ./app.sh app.sh running with SOME_ENV_VAR= app.sh running app.js echo $SOME_ENV_VAR Some Value at Thu Mar 27 2014 08:13:01 GMT-0600 (MDT)
也许这些会给你一些想法。
- 如何将外部JSON数据从前一个任务中生成的文件传递给任务?
- AngularJS:http链调用和NodeJS的问题:在多个http调用中使用variables的问题
- can'ffind“process.env.NODE_ENV”
- 用node.js读取传入的HTTP头
- Javascript – 从外部调用variablesIf / Else Block返回未定义
- 将可变长度数组传递给Node JS
- dotenv-webpack是否将.env的所有环境variables公开给前端?
- 我怎样才能看到我的node.jsvariables已经启动?
- 如何使用travis-ci的.travis.yml为Node.js应用程序提供环境参数?