好吧,我想在使用 node.js 执行 js 文件期间添加环境变量。
就像是:
process.env['VARIABLE'] = '值';
我使用终端使用模块运行 js 文件,我可以设置变量,然后在 js 文件执行期间使用它,但我想使用“process.env”设置变量,然后当执行结束,我想在终端中使用它,或者在另一个js进程中使用它。
我知道可以使用 child_process.exec,并使用 SET (Windows) 或 EXPORT (Mac & Linux),但只是询问它如何可能,或者使用哪种设计或过程来添加它,只需使用“进程.env”。
预先感谢各位。
unix 权限模型不允许子进程(您的 node.js 应用程序)更改其父进程(在终端内运行的 shell)的环境。这同样适用于当前工作目录、有效 uid、有效 gid 和其他几个每个进程的参数。 AFAIK 没有直接的方法来做你所要求的事情。您可以执行诸如打印命令以将其设置为标准输出之类的操作,以便用户可以轻松地将 shell 命令复制/粘贴到他们的终端中,但您最好的选择是在一个单独的问题中解释您试图解决的更广泛的问题,并让人们知道告诉您完成该任务的可行方法,而不是尝试更改父进程的环境。
一种可能的解决方法很简单,就像从终端运行节点程序一样:
export SOME_ENV_VAR="$(node app.js)"
并有app.js
只需通过打印所需的值process.stdout.write
.
第二个 hack 是一个包装 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());
在终端的交互式 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)
也许这些会给你一些可以使用的想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)