如何使 .env 变量在 JS class 构造函数中工作?
How to make .env variables work inside JS class constructors?
我正在做一个 Node/Express 项目。大多数代码包含在文件夹内的文件中,因此名为 'controllers' 的文件夹包含项目的所有控制器,名为 'services' 的文件夹包含项目的所有服务等。开始的代码服务器位于一个名为 app.js
的文件中,该文件直接位于项目根目录中。
所有控制器和服务都声明为 JS classes 并包含一个构造函数。 Dotenv 在 app.js
中加载,env 变量在任何地方都能很好地工作,但在 class 构造函数中,因为它们似乎在 dotenv 初始化之前加载。
使用的 class 语法示例:
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 变量在 class 构造函数中工作 而无需 在每个 class 的开头导入和初始化 dotenv文件?
如果我确实求助于将 dotenv 单独导入每个 class 文件,除了使代码不那么干净之外,它还会有任何其他缺点吗?
尝试在 dotenv 上使用 preload 加载应用程序(从源代码复制):
预加载
您可以使用 --require (-r) 命令行选项预加载 dotenv。通过这样做,您不需要在应用程序代码中要求和加载 dotenv。这是使用 import 而不是 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
我正在做一个 Node/Express 项目。大多数代码包含在文件夹内的文件中,因此名为 'controllers' 的文件夹包含项目的所有控制器,名为 'services' 的文件夹包含项目的所有服务等。开始的代码服务器位于一个名为 app.js
的文件中,该文件直接位于项目根目录中。
所有控制器和服务都声明为 JS classes 并包含一个构造函数。 Dotenv 在 app.js
中加载,env 变量在任何地方都能很好地工作,但在 class 构造函数中,因为它们似乎在 dotenv 初始化之前加载。
使用的 class 语法示例:
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 变量在 class 构造函数中工作 而无需 在每个 class 的开头导入和初始化 dotenv文件?
如果我确实求助于将 dotenv 单独导入每个 class 文件,除了使代码不那么干净之外,它还会有任何其他缺点吗?
尝试在 dotenv 上使用 preload 加载应用程序(从源代码复制):
预加载
您可以使用 --require (-r) 命令行选项预加载 dotenv。通过这样做,您不需要在应用程序代码中要求和加载 dotenv。这是使用 import 而不是 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