【问题标题】:Nx & Angular: resolve dependency in moduleNx 和 Angular:解决模块中的依赖关系
【发布时间】:2022-01-11 22:17:44
【问题描述】:

我的计划是在库模块中使用 NgRx 相关模块(存储、效果、开发工具等),而不是在应用程序模块中。

NgRx 相关模块被导入到 libs/.../shell-module 中,然后又被导入到 app-module 中。


**问题:**
我想在我的库中提供 environment.production 变量,但我不知道如何在不使用相对/绝对导入路径的情况下在 shell 模块中获取它。

库/.../shell.module.ts
import { environment } from '../../../../../../../apps/test-app/src/environments/environment';

imports:[
...
!environment.production ? StoreDevtoolsModule.instrument() : []
...
]

**问题:**
  1. 不可能在 Angular 模块中解析 environment.production 变量吗?
    我知道如何将东西注入组件,但是如何将其注入模块?
    .forRoot() 配置技巧不起作用,因为模块装饰器中的导入数组超出了模块类的范围。

  2. 是否有另一种方法可以在不紧密耦合 environment.ts 文件和我的 libs 模块的情况下做到这一点?

  3. 在 tsconfig.json 中为 environment.ts 定义一个 '@' 路径,然后将其导入到模块中仍然算作紧耦合……对吧?

【问题讨论】:

    标签: angular nrwl-nx nrwl


    【解决方案1】:

    为此,我通常建议将环境配置也向下移动到库中。

    例如,您可能拥有libs/shared/env/environment.*.tslibs/domain/env/environment.*.ts。您需要更新应用程序的构建步骤,以确保设置 fileReplacements 来处理这些。然后在你的应用中你可以使用import {environment} from '@company/shared/eng'

    如果使用可构建库,这看起来会有些不同,因为您希望在库构建定义中处理文件替换。

    【讨论】:

    • 嗨 Craigory,我想过这样做。但是,这不是“破坏推荐的 Angular/Nx 项目结构”吗?并可能导致长期不必要的问题?
    • 我认为这不会比任何其他核心共享库更破坏结构。
    • 我这样做了,但我收到了这个错误:“项目应该使用相对导入来从同一项目中的其他文件导入。使用“./path/to/file”而不是导入自。 ……”。即使重新启动 ESLint 服务器后,错误仍然存​​在。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2016-10-26
    • 2013-06-15
    • 2020-01-11
    • 1970-01-01
    相关资源
    最近更新 更多