没有 'ɵmod' 属性 错误
Does not have 'ɵmod' property errors
我已经卡在这个问题上一天了。
在一个干净的 repo 上,在执行 pnpm 安装后,然后执行 ng 服务,您最终会在控制台中出现此错误
...does not have 'ɵmod' property
任何模块都可能发生这种情况,下面的解决方法适用于任何模块。注意:如果您导入的不是模块,也会发生这种情况 - 在这种情况下我的导入没有任何问题。
解决方法:
- 重新启动 ng serve 或 运行 ng build 两次
- 参见 ngx-leaflet-draw: Importing module which does not have a ɵmod property(但我无法让 ngcc 实际执行任何操作 - 所以这对我不起作用 - 值得指出的是我的回购协议有多个项目)
虽然这些变通办法可能适用于开发环境,但在 CI 环境中,您基本上必须使用 ng build 两次才能解决该问题(这是有代价的)。
我目前在 CI 构建中的解决方案是构建两次(告诉编译器很可怕,如果你第一次没有做对,再试一次...)
你是如何找到这个问题的根本原因的? (所以我可以在我的 CI 构建中有一个 ng 构建步骤)。
我的问题是我使用 pnpm 作为包管理器。不幸的是,pnpm 似乎不能很好地与 ngcc 配合使用——pnpm 在 node_modules 文件夹中使用硬链接。我有 raised an issue 和 pnpm。
事实证明,pnpm 也会导致以下问题(所有问题都可以通过 运行 ng serve 或 build 重新修复):
- TypeError: 无法读取 null
的 属性 'bindingStartIndex'
- 构建期间发生错误:错误:试图用 ngcc 备份文件覆盖...__ivy_ngcc_bak,这是不允许的
我已经卡在这个问题上一天了。
在一个干净的 repo 上,在执行 pnpm 安装后,然后执行 ng 服务,您最终会在控制台中出现此错误
...does not have 'ɵmod' property
任何模块都可能发生这种情况,下面的解决方法适用于任何模块。注意:如果您导入的不是模块,也会发生这种情况 - 在这种情况下我的导入没有任何问题。
解决方法:
- 重新启动 ng serve 或 运行 ng build 两次
- 参见 ngx-leaflet-draw: Importing module which does not have a ɵmod property(但我无法让 ngcc 实际执行任何操作 - 所以这对我不起作用 - 值得指出的是我的回购协议有多个项目)
虽然这些变通办法可能适用于开发环境,但在 CI 环境中,您基本上必须使用 ng build 两次才能解决该问题(这是有代价的)。
我目前在 CI 构建中的解决方案是构建两次(告诉编译器很可怕,如果你第一次没有做对,再试一次...)
你是如何找到这个问题的根本原因的? (所以我可以在我的 CI 构建中有一个 ng 构建步骤)。
我的问题是我使用 pnpm 作为包管理器。不幸的是,pnpm 似乎不能很好地与 ngcc 配合使用——pnpm 在 node_modules 文件夹中使用硬链接。我有 raised an issue 和 pnpm。
事实证明,pnpm 也会导致以下问题(所有问题都可以通过 运行 ng serve 或 build 重新修复):
- TypeError: 无法读取 null 的 属性 'bindingStartIndex'
- 构建期间发生错误:错误:试图用 ngcc 备份文件覆盖...__ivy_ngcc_bak,这是不允许的