在我的Angular应用中,我正在使用squel.js,并且在开发模式下使用时效果很好。
但是,当我构建用于生产的应用程序并尝试使用它时,出现以下错误:
ca.select(...)。from不是函数
在未缩小的代码中对应于:
import * as squel from 'squel';
// ...
squel.select().from(...)
答案 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.Delete
,Insert
等替换,当然我们需要导入他们:
Delete
这样,我们仅使用import { Squel, Delete, Insert } from 'squel';
来导入类型定义,而不是整个库。
https://github.com/azerothcore/Keira3/commit/98f191eb59cf9c853dd8a54a845a029c7a4ddef8