如何从 NPM 包内的主进程设置 process.env?
How can I set process.env from main process inside of an NPM package?
我正在编写一个使用 process.env 设置环境变量的 NPM 包。这是 NPM 包中的代码:
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.
})
我正在编写一个使用 process.env 设置环境变量的 NPM 包。这是 NPM 包中的代码:
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.
})