Typescript:使用ng Packagegr编译Angular 9项目时出现名称空间冲突警告

Typescript:使用ng Packagegr编译Angular 9项目时出现名称空间冲突警告,angular,typescript,compilation,compiler-warnings,ng-packagr,Angular,Typescript,Compilation,Compiler Warnings,Ng Packagr,我不确定这个问题的真正原因是什么。我想是打字稿,但也可以是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 a

我不确定这个问题的真正原因是什么。我想是打字稿,但也可以是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时收到了相同的警告,在网上查找一些信息/解决方案,我还发现了这个Angular问题页面(2019年11月,3个月前),他们说这是一个常春藤问题,与“导出”相关

这很奇怪,因为我需要发布到npm,而构建建议说要禁用Ivy,所以我禁用了它(tsconfig.lib.json中的angularCompilerOptions.enableIvy false):相反,将enableIvy设置为true会使警告消失

所以我做了这个尝试,在tsconfig.lib.json中将enablevy设置为false的同时,在public-api.ts中,我修改了“export*”,将“*”替换为所有导出的对象,一个接一个:警告消失了,库正在工作


但我真的不知道这是否是一个好的解决方案,或者仅仅显示警告是否更好。

关于这个主题,这是否是一个好方法:根据2019年11月的一条评论,手动在angular libs中逐个重新导出所有对象是当前所需的方法。所以这个答案应该是正确的