使用“ shelljs”在Node.js中“采购”脚本时出现问题

时间:2018-07-24 14:43:36

标签: node.js environment-variables shelljs

我正在尝试开发命令行Node.js应用程序以运行应用程序的自动化测试。本应用程序依赖于许多环境变量来运行。在“安装”和“启动”步骤之后,需要获取一个环境文件来设置环境并开始工作。我的Node.js应用程序还遵循相同的步骤(安装和启动守护程序也是测试自动化的一部分)。第三步,用户将在终端上执行
$ . ./batchenv primer
它将在会话中提供一堆变量,随后的任务将在其中运行。
在Node应用程序中,我正在做
sh.exec('. ./batchenv primer')
但这是我看到的错误
Setting primer Subsystem environment /home/ymk/TESTPATH2/nod/batchenv: line 60: source': is a special builtin exec: /home/ymk/TESTPATH2/nod/batchenv: line 60:source': is a special builtin

batchenv文件基本上是一个shell脚本,可以导出许多环境变量,但是中间有一个source': is a special builtin exec: /home/ymk/TESTPATH2/nod/batchenv: line 60:块,看起来像..

if..fi

PS1="[`basename $EBMHOME`] # "; export PS1 if [ $# -eq 1 ] then subsysname=$1 grep "^$subsysname=" $EBMHOME/.install > $DEVNULL 2>&1 if [ $? -eq 0 ] then setupfile=`grep "^$subsysname=" $EBMHOME/.install | cut -f2 -d'='` if [ -f $setupfile ] then echo "Setting $subsysname Subsystem environment" function setenv { export "$1"="$2" } function source { . "$1" } . $setupfile if [ -f ${setupfile}_usr ] then . ${setupfile}_usr fi unset -f setenv unset -f source PS1="[`basename $EBMHOME`/$subsysname] # "; export PS1 EBMSYS=$subsysname; export EBMSYS else echo "" echo "ERROR. Setup file for $subsysname Subsystem not found" echo "" fi fi fi 似乎与shelljs.exec有问题(在正常的shell中,此脚本可以正常运行)。

问:我该如何解决这个问题?我也使用了function source模块,但这意味着在Node应用程序启动时就加载env vars。我需要随时/在执行过程中将一堆变量注入到我的底层shell中。另外,我不确定dotenv是否能够处理dotenv块。

0 个答案:

没有答案