我正在研究Node / Express项目。大部分代码包含在文件夹内的文件中,因此名为“ controllers”的文件夹包含项目的所有控制器,名为“ services”的文件夹包含项目的所有服务,等等。启动服务器的代码位于内部app.js
直接在项目根目录中的一个名为的文件。
所有的控制器和服务都声明为JS类,并包含一个构造函数。Dotenv被加载到内部,app.js
并且env变量在类构造函数内部的所有地方都能正常工作,因为那些似乎在dotenv初始化之前被加载。
使用的类语法的示例:
export default class exampleService {
constructor() {
console.log('This is not working', process.env.EXAMPLE); // process.env.EXAMPLE is undefined
}
myFunction() {
console.log('This works just fine', process.env.EXAMPLE); // process.env.EXAMPLE is exactly how it's defined in .env
}
// All other class methods are here.
}
有没有一种方法可以让dotenv变量在类构造函数中工作而不必在每个类文件的开头导入和初始化dotenv?
如果我确实希望将dotenv分别导入每个类文件,那么除了使代码不太干净之外,它还会有其他弊端吗?
尝试在dotenv上预加载加载应用程序(从源复制):
预载
您可以使用--require(-r)命令行选项来预加载dotenv。这样,您无需在应用程序代码中要求并加载dotenv。当使用导入而不是require时,这是首选方法。
$ node -r dotenv/config your_script.js
支持以下配置选项作为格式的命令行参数 dotenv_config_<option>=value
$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/your/env/vars
此外,您可以使用环境变量来设置配置选项。命令行参数将在这些参数之前。
$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config your_script.js
$ DOTENV_CONFIG_ENCODING=latin1 node -r dotenv/config your_script.js dotenv
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句