Search code examples
angularangular-cling-packagr

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


Here's a repo that reproduces it: https://github.com/dragonflypl/ng-packagr-issue

  1. I've create a simple package logging. npm run build generates the library + does npm pack
  2. Then I generated fooGui with Angular CLI and installed library it via npm run consume that installs tgz
  3. Running npm run build from fooGui throws:

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

Any idea what I did wrong or it is a bug somewhere?


Solution

  • I've found the culprit: in public api file, I have:

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

    that accesses index.ts.

    When I replaced it with explicit it with explicit exports:

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

    then it works. But the question now is : any idea why? Because I don't know.