节点可执行文件运行后,导出NODE_PATH

有节点启动后设置NODE_PATH envvariables的方法吗?

如果我这样做:

async.series([ function export_NODE_PATH(cb){ cp.exec('export NODE_PATH=$(npm root -g):$NODE_PATH',cb); },... 

它不会工作,但如果我在启动节点之前设置NODE_PATH,它将按预期方式工作

 export NODE_PATH=$(npm root -g):$NODE_PATH && node index --transpile test 

有没有办法在node.js运行时设置环境variables,而不需要在执行前在命令行设置它? 是否像在运行时设置process.env.NODE_PATH一样简单?

例如,这似乎工作:

  cp.exec('echo $(npm root -g)', function (err, stdout, stderr) { if (err || String(stdout).match(/error/i) || String(stderr).match(/error/i)) { cb(err || stdout || stderr); // my funky way of handling this } else { process.env.NODE_PATH += stdout; cb(null); } }); 

但我不知道这是多么犹太教,而且在进一步的testing之后,它似乎并不工作。

一种方法是创build一个.env文件,并使用名为dotenv的npm库自动将.env文件variables加载到process.env中。 步骤如下:

步骤1:在您的项目目录$ touch .env创build一个.env文件

第2步:将下列文本放在.env文件中“ NODE_ENV=yourvaluehere ”(不含引号)

第3步:安装dotenv $ npm install dotenv --save

步骤3:在运行js文件启动服务器,添加下面的require('dotenv').config();

Viola现在正在通过env文件在节点进程中设置环境variables。 您的process.env将存储您的.env文件中的所有键值对!

设置process.env.NODE_PATH (或任何其他的env var)完全是“合法的” – 实际上这就是dotenvyenv这样的库如何实现它们的魔力。