【发布时间】:2018-11-11 08:50:40
【问题描述】:
我一直在使用 InversifyJS 来处理我的打字稿服务器上的 DI。关键是我想根据环境在我的代码中注入不同的实现。
有一个常见的场景,我想在生产中使用 S3,但在我的笔记本电脑上开发时使用本地文件夹。由于我使用interface 进行此通信,因此可以选择使用两个不同的配置文件来包含容器信息,但是使用条件将容器加载到我的服务上是很脏的。
另一种选择是拥有一个配置文件,但根据环境配置一个实现或另一个实现。像这样的:
container.bind<IStorageRepository>(SERVICE_IDENTIFIER.STORAGE).to(
(process.env.ENVIRONMENT === 'prod') ? S3StorageRepository : LocalFolderStorageRepository
);
但我一点也不喜欢这样,因为如果你有三个(或更多)不同的环境有不同的需求,那就有点疯狂了。
有什么想法吗?
【问题讨论】:
-
在此期间...您找到解决方案了吗?
-
不,我使用
process.env.ENVIRONMENT保留了实现,我没有找到更简洁的解决方案。
标签: javascript typescript dependency-injection inversifyjs