假设有一个变量key1,其值为123
键1 = 123所以当我在linux环境中运行命令echo $ key1时,输出为123。现在我有以下gulp任务。
const …
您没有导出变量。当你这么做的时候
key1=123
变量不会传播到子进程。它将在您当前可用 bash 进程,因此您可以在键入时看到它 echo $key1 ,但它不会被继承 node 处理。如 man bash 说:
bash
echo $key1
node
man bash
当要执行除builtin或shell函数之外的简单命令时,将在由以下内容组成的单独执行环境中调用它。除非另有说明,否则值将从shell继承。 [...] 标记为导出的shell变量和函数,以及为该命令导出的变量,在环境中传递
当要执行除builtin或shell函数之外的简单命令时,将在由以下内容组成的单独执行环境中调用它。除非另有说明,否则值将从shell继承。
[...]
标记为导出的shell变量和函数,以及为该命令导出的变量,在环境中传递
您需要将变量定义为已导出
export key1=123
或标记现有变量以进行导出
key1=123 export key1
或者通过bash先天功能启动具有修改环境的节点
key1=123 node code.js
或使用 /usr/bin/env 效用:
/usr/bin/env
env key1=123 node code.js
将变量正确传递给节点进程后,它将同时可用 process.env.key1 并作为 $key1 在儿童过程中。
process.env.key1
$key1
编辑:我刚注意到,你实际上给了你正在运行的命令;没关系,每个可执行文件都有相同的逻辑 node 要么 npm 或其他任何东西。
npm