缩小后ca.select(...)。from不是函数

时间:2019-06-18 09:37:50

标签: angular typescript angular-cli minify squel.js

在我的Angular应用中,我正在使用squel.js,并且在开发模式下使用时效果很好。

但是,当我构建用于生产的应用程序并尝试使用它时,出现以下错误:

  

ca.select(...)。from不是函数

在未缩小的代码中对应于:

import * as squel from 'squel';

// ...

squel.select().from(...)

1 个答案:

答案 0 :(得分:0)

此问题是由bug in squel.js引起的,该问题导致缩小后无法使用。

解决方案(解决方法)

1)通过将sqlite添加到angular.json的{​​{1}}数组中,将sqlite作为脚本包含在import中,而不是使用scripts

projects.myAppName.architect.build.options

"scripts": [ "node_modules/squel/dist/squel.min.js" ] 做同样的操作,以修复单元测试。


2)现在生产包很好,但是我们必须修复类型,以便ts编译器也可以工作。

自从我们删除:

projects.myAppName.architect.test.options

import * as squel from 'squel'; 之类的所有类型都将被破坏。

我们需要添加:

squel.Insert

现在所有类型的输入,例如declare const squel: Squel & {flavour: null}; squel.Insert等将被squel.DeleteInsert等替换,当然我们需要导入他们:

Delete

这样,我们仅使用import { Squel, Delete, Insert } from 'squel'; 来导入类型定义,而不是整个库。

示例

https://github.com/azerothcore/Keira3/commit/98f191eb59cf9c853dd8a54a845a029c7a4ddef8