将 ng-packagr 生成的包与 Angular CLI 应用集成:找不到模块

Integrating ng-packagr generated package with Angular CLI app: Module not found

这是一个重现它的回购协议:https://github.com/dragonflypl/ng-packagr-issue

  1. 我创建了一个简单的包 loggingnpm run build 生成库 + 做 npm pack
  2. 然后我使用 Angular CLI 生成了 fooGui 并通过安装 tgz
  3. npm run consume 安装了库
  4. 运行 npm run build 来自 fooGui 抛出:

ERROR in ./src/app/app.component.ngfactory.js Module not found: Error: Can't resolve 'logging/src/modules/logging/logger/index' in 'C:\XXX\dev\ng-packagr-issue\fooGui\src\app' resolve 'logging/src/modules/logging/logger/index' in 'C:\XXX\dev\ng-packagr-issue\fooGui\src\app' Parsed request is a module using description file: C:\XXX\dev\ng-packagr-issue\fooGui\package.json (relative path: ./src/app) Field 'browser' doesn't contain a valid alias configuration after using description file: C:\XXX\dev\ng-packagr-issue\fooGui\package.json (relative path: ./src/app) resolve as module C:\XXX\dev\ng-packagr-issue\fooGui\src\app\node_modules doesn't exist or is not a directory C:\XXX\dev\ng-packagr-issue\fooGui\src\node_modules doesn't exist or is not a directory C:\XXX\dev\ng-packagr-issue\node_modules doesn't exist or is not a directory C:\XXX\dev\node_modules doesn't exist or is not a directory C:\XXX\node_modules doesn't exist or is not a directory C:\node_modules doesn't exist or is not a directory looking for modules in C:\XXX\dev\ng-packagr-issue\fooGui\node_modules using description file: C:\XXX\dev\ng-packagr-issue\fooGui\package.json (relative path: ./node_modules) Field 'browser' doesn't contain a valid alias configuration after using description file: C:\XXX\dev\ng-packagr-issue\fooGui\package.json (relative path: ./node_modules) using description file: C:\XXX\dev\ng-packagr-issue\fooGui\node_modules\logging\package.json (relative path: ./src/modules/logging/logger/index) no extension Field 'browser' doesn't contain a valid alias configuration C:\XXX\dev\ng-packagr-issue\fooGui\node_modules\logging\src\modules\logging\logger\index doesn't exist .ts Field 'browser' doesn't contain a valid alias configuration C:\XXX\dev\ng-packagr-issue\fooGui\node_modules\logging\src\modules\logging\logger\index.ts doesn't exist .js Field 'browser' doesn't contain a valid alias configuration C:\XXX\dev\ng-packagr-issue\fooGui\node_modules\logging\src\modules\logging\logger\index.js doesn't exist as directory C:\XXX\dev\ng-packagr-issue\fooGui\node_modules\logging\src\modules\logging\logger\index doesn't exist

知道我哪里做错了吗?或者这是某个地方的错误?

我找到了罪魁祸首:在 public api 文件中,我有:

export * from './src/modules/logging/logger';

访问 index.ts.

当我用显式导出替换它时:

export * from './src/modules/logging/logger/logger.service';
export * from './src/modules/logging/logger/log-level.enum';

然后就可以了。但现在的问题是:知道为什么吗?因为我不知道。