将 ng-packagr 生成的包与 Angular CLI 应用集成:找不到模块
Integrating ng-packagr generated package with Angular CLI app: Module not found
这是一个重现它的回购协议:https://github.com/dragonflypl/ng-packagr-issue
- 我创建了一个简单的包
logging
。 npm run build
生成库 + 做 npm pack
- 然后我使用 Angular CLI 生成了
fooGui
并通过安装 tgz 的 npm run consume
安装了库
- 运行
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';
然后就可以了。但现在的问题是:知道为什么吗?因为我不知道。
这是一个重现它的回购协议:https://github.com/dragonflypl/ng-packagr-issue
- 我创建了一个简单的包
logging
。npm run build
生成库 + 做npm pack
- 然后我使用 Angular CLI 生成了
fooGui
并通过安装 tgz 的 - 运行
npm run build
来自fooGui
抛出:
npm run consume
安装了库
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';
然后就可以了。但现在的问题是:知道为什么吗?因为我不知道。