首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg-promise升级到10.3.1后ncc构建失败

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

Stack Overflow用户
提问于 2019-12-13 19:09:04
回答 1查看 146关注 0票数 0

我们的ncc构建(版本0.18.5)在将pg-promise8.7.5升级到10.3.1后失败

代码语言:javascript
复制
Error: Module not found: Error: Can't resolve 'pg-promise/typescript/pg-subset' in ...

问题发生在我们添加了以下import语句之后:

代码语言:javascript
复制
import { IConnectionParameters } from 'pg-promise/typescript/pg-subset';

关于pg-promise库的奇怪之处在于它有两个d.ts文件(github-link):

也许这很好,我只是以前没见过。

大多数其他库要么为每个js文件提供一个d.ts文件,要么包含整个库的所有类型的单个.d.ts文件。

在库的package.json中,它只提到了一种类型:

代码语言:javascript
复制
  "typings": "typescript/pg-promise.d.ts",

当我们构建项目时,main.js输出包含对pg-subset的要求

代码语言:javascript
复制
module.exports = require("pg-promise/typescript/pg-subset");

然后将此main.js文件传递给导致错误的ncc build

我在这里有点迷茫,因为我没有太多的经验来使用webpack和模块系统:但我认为要求pg-subset会失败,因为没有相关的js文件,对吧?

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-17 23:38:58

更新14.03.2021

我认为我们应该使用type-only-import来解决这个问题:

代码语言:javascript
复制
    import type { IConnectionParameters } from 'pg-promise/typescript/pg-subset';

我们的项目已经发生了很大的变化,所以我无法确认。

原创

我想出了一个令人讨厌的快速修复来让ncc编译再次工作。

在我的项目中,我添加了一个文件pg-subset.ts,它只重新导出使用过的接口:

代码语言:javascript
复制
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文件不再包含这一行:

代码语言:javascript
复制
 module.exports = require("pg-promise/typescript/pg-subset");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59321355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档