开发者问题收集

Angular 12 - 未捕获的 TypeError:无法读取 isModuleWithProviders 中未定义的属性(读取‘ngModule’)

2021-09-09
7924
core.js:27296 Uncaught TypeError: Cannot read properties of undefined (reading 'ngModule')
    at isModuleWithProviders (core.js:27296)
    at expandModuleWithProviders (core.js:27290)
    at Array.map (<anonymous>)
    at Function.get (core.js:26927)
    at getNgModuleDef (core.js:1117)
    at assertNgModuleType (core.js:1296)
    at compileNgModuleFactory__POST_R3__ (core.js:29073)
    at PlatformRef.bootstrapModule (core.js:29324)
    at Module.14431 (main.ts:11)
    at __webpack_require__ (bootstrap:19)

我有一个由主项目 (app) 使用的自定义库。在将项目更新到 Angular 12 之前,一切都很好。

我按照 此处 的更新说明进行操作,适用于主项目和自定义库

当我提供服务时没有编译错误,当我使用 --prod 标志构建时也没有构建错误。但是,当我尝试从浏览器本地评估应用程序时,我收到上述错误。

我已尝试对其进行调试。这让我找到了这些解决方案, 这里 这里 。有了这些,我能够将错误追溯到从自定义库导入的模块。但这就是我陷入困境的地方。

请问有人可以协助修复错误并运行应用程序吗?

App.module

import { UtilsModule } from '@utils/utils.module';
import { PipesModule } from '@pipes/pipes.module';

...

@NgModule({
    imports: [
        BrowserModule,
    ...
        PipesModule,
        UtilsModule
    ]
})

tsconfig.json

{
"paths": {
      ...
      "@pipes/*": [
        "./node_modules/custom-library/src/pipes/*"
      ],
      "@utils/*": [
        "./node_modules/custom-library/src/utils/*"
      ],
     ...
   }
 ...
 }

package.json

{
 ...
 "dependencies": {
     ...
     "custom-library": "url-to-repository-branch"
     ...
   }
 ...
}

该库使用此方法安装 这里

1个回答

经过一天的故障排除,我发现了以下内容...

问题

我们的项目中有几个未发布的角度库。

在本地开发期间,一切都很好。然而,在部署到生产环境中时, tsconfig.json 中定义的路径不知何故丢失了。

解决方案

  • 从库创建构建 npm build [project-library]
  • 从新文件夹创建包 npm package [path-to-build-library]
  • npm install 该库,基于 tgz 文件:
    • npm i "file:/./tmp/library-to-import.0.0.1.tgz"
  • 从包导入组件时,必须从构建和安装的包中完成,而不是从源代码中完成

这解决了我的问题。

Cafn
2021-10-11