如何在NPM包内从主进程设置process.env



我正在编写一个NPM包,该包使用process.env设置环境变量

Object.keys(parsedObj).forEach((key) => {
process.env[key] = parsedObj[key];
});

在包中的这个文件中,我console.log process.env并查看正确设置的变量。但是,当我在导入该函数的代码中调用该函数时,我会丢失console.log process.env和变量。

对于上下文,这里是整个文件:https://github.com/arsood/Cooler-Env/blob/master/loadEnv.js#L33

有人想过为什么在运行这个函数后,这些全局变量在主代码中不可用吗?模块是否运行自己的流程?如果是,是否有方法将环境变量从包写入主进程?

看起来你的函数是异步的,并且你的模块导出了函数,所以我建议你在启动应用程序时在文件中导入一次文件,然后调用它并等待它的执行,然后再启动应用程序的其余部分,否则就没有保证,因为代码是异步的。

loadEnv()
.then(() => {
initApp(); // Some function that starts rest of the app.
})

最新更新