我们的ncc构建(版本0.18.5
)在从pg-promise升级到8.7.5
后失败。
10.3.1
在添加此导入语句后出现了问题:
Error: Module not found: Error: Can't resolve 'pg-promise/typescript/pg-subset' in ...
关于pg-promise lib的奇怪之处在于它有2个import { IConnectionParameters } from 'pg-promise/typescript/pg-subset';
文件(d.ts
):
也许很好,我之前从未见过。大多数其他库在每个文件中都有一个d.ts
文件,或者在整个lib中都有所有类型的单个js
文件。
在库的.d.ts
中,仅提及其中一种类型:
package.json
[在构建项目时, "typings": "typescript/pg-promise.d.ts",
输出包含对main.js
的需求:
pg-subset
然后将此module.exports = require("pg-promise/typescript/pg-subset");
文件传递到main.js
,这会导致错误。
我在这里有点迷茫,因为我对webpack和模块系统没有太多经验:但是我认为要求ncc build
会失败,因为没有相关的js文件,对吗?
有什么想法吗?
我想出了一个nasty quick-fix使ncc编译再次起作用。
在我的项目中,添加文件pg-subset
,该文件仅重新导出使用的接口:
pg-subset.ts
在所有其他文件中,我将导入更改为使用此项目文件(而不是import { IConnectionParameters as IConnectionParametersOrig } from 'pg-promise/typescript/pg-subset';
/**
* this file is a quick-fix for the ncc build
*/
export type IConnectionParameters = IConnectionParametersOrig;
)。
然后编译有效-但我不明白为什么:例如现在我们仍然导入pg-promise/typescript/pg-subset
(一次在新项目pg-promise/typescript/pg-subset
文件中)。但是这次pg-subset.ts
文件不再包含此行:
main.js