Typescript:使用 ng-packagr 编译 Angular 9 项目时出现命名空间冲突警告
Typescript: conflicting namespaces warning on Angular 9 project compilation with ng-packagr
我不确定这个问题到底应该归咎于什么。我认为它是 Typescript,但它可能是 ng-packagr 或 Angular。当我更新到 Angular 9.
时才开始
这是我在生产版本中收到的消息...
WARNING: Conflicting namespaces: dist/web-apps-shared/esm2015/public_api.js re-exports 'ɵ0' from both dist/web-apps-shared/esm2015/lib/api-applications/reducers.js and dist/web-apps-shared/esm2015/lib/account-codes/reducers.js (will be ignored)
这是导致此问题的来源之一...
export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState,
(state: SharedAccountCodeState) => state.totalItems);
出于某种原因,编译器获取函数参数并将其分配给 const
,然后像这样导出它...
const ɵ0 = (state) => state.totalItems;
export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState, ɵ0);
export { ɵ0 };
我的问题是,为什么 ɵ0
需要导出?它仅在该文件内部使用。我错过了什么吗?应该担心这个吗?使用此代码构建的库时,它似乎没有引起问题。
我在更新到 Angular 9 时收到了同样的警告,在网上寻找一些 info/solutions 我也找到了这个 Angular 问题页面 https://github.com/angular/angular/issues/33668(11/2019 所以 3 个月前),他们说这是 Ivy 的问题,与 "export * ".
有关
这很奇怪,因为我需要发布到 npm 并且构建建议说禁用 Ivy ,所以我禁用了它(tsconfig.lib.json 中的 angularCompilerOptions.enableIvy false):相反,将 enableIvy 设置为 true使警告消失。
所以我做了这个尝试,同时在 tsconfig.lib.json 中将 enableIvy 设置为 false,在 public-api.ts 中我修改了 "export * " 替换了“ *" 与所有导出的对象,一个接一个:警告消失,库正在运行。
但我真的不知道这是一个很好的修复,还是只显示警告更好..
我不确定这个问题到底应该归咎于什么。我认为它是 Typescript,但它可能是 ng-packagr 或 Angular。当我更新到 Angular 9.
时才开始这是我在生产版本中收到的消息...
WARNING: Conflicting namespaces: dist/web-apps-shared/esm2015/public_api.js re-exports 'ɵ0' from both dist/web-apps-shared/esm2015/lib/api-applications/reducers.js and dist/web-apps-shared/esm2015/lib/account-codes/reducers.js (will be ignored)
这是导致此问题的来源之一...
export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState,
(state: SharedAccountCodeState) => state.totalItems);
出于某种原因,编译器获取函数参数并将其分配给 const
,然后像这样导出它...
const ɵ0 = (state) => state.totalItems;
export const selectTotalAccountCodes = createSelector(selectSharedAccountCodeState, ɵ0);
export { ɵ0 };
我的问题是,为什么 ɵ0
需要导出?它仅在该文件内部使用。我错过了什么吗?应该担心这个吗?使用此代码构建的库时,它似乎没有引起问题。
我在更新到 Angular 9 时收到了同样的警告,在网上寻找一些 info/solutions 我也找到了这个 Angular 问题页面 https://github.com/angular/angular/issues/33668(11/2019 所以 3 个月前),他们说这是 Ivy 的问题,与 "export * ".
有关这很奇怪,因为我需要发布到 npm 并且构建建议说禁用 Ivy ,所以我禁用了它(tsconfig.lib.json 中的 angularCompilerOptions.enableIvy false):相反,将 enableIvy 设置为 true使警告消失。
所以我做了这个尝试,同时在 tsconfig.lib.json 中将 enableIvy 设置为 false,在 public-api.ts 中我修改了 "export * " 替换了“ *" 与所有导出的对象,一个接一个:警告消失,库正在运行。
但我真的不知道这是一个很好的修复,还是只显示警告更好..