[将pg-promise升级到10.3.1后ncc构建失败

问题描述 投票:0回答:1

我们的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):

github-link

也许很好,我之前从未见过。大多数其他库在每个enter image description here文件中都有一个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文件,对吗?

有什么想法吗?

webpack typescript-typings pg-promise zeit-ncc
1个回答
0
投票

我想出了一个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
© www.soinside.com 2019 - 2024. All rights reserved.