我正在尝试在我的混合angularjs和Angular 7.2.2项目中实现libphonenumber-js。它在JIT(ng serve
)中工作正常,但是在buildOptimizer
中启用optimize
和angular.json
时会出错。
如果仅启用上述一项,它也可以正常工作。
在构建过程中我没有任何错误,但是当我在网站上打开表单时,控制台中具有以下内容。
angular.js.pre-build-optimizer.js:14961 TypeError: (0 , r.default) is not a function
at MfjL.e.default (isValidNumberForRegion.js.pre-build-optimizer.js:37)
at e.isValidNumberForRegion (phone-utils.service.ts:32)
at O (my-account-data-controller.js.pre-build-optimizer.js:48)
at xt (my-account-data-controller.js.pre-build-optimizer.js:57)
at Object.invoke (angular.js.pre-build-optimizer.js:5117)
at O.instance (angular.js.pre-build-optimizer.js:11139)
at it (angular.js.pre-build-optimizer.js:10002)
at angular.js.pre-build-optimizer.js:9311
at angular.js.pre-build-optimizer.js:9176
at Object.link (angular.js.pre-build-optimizer.js:28821)
我们在网站中使用ng升级(https://angular.io/guide/upgrade)。
在chrome调试器中,当我点击angular.js.pre-build-optimizer.js:14961
时,我进入
// Support: IE 9 only
// console methods don't inherit from Function.prototype in IE 9 so we can't
// call `logFn.apply(console, args)` directly.
return Function.prototype.apply.call(logFn, console, args);
当我单击isValidNumberForRegion.js.pre-build-optimizer.js:37
时,这是代码:
// `parse` extracts phone numbers from raw text,
// therefore it will cut off all "garbage" characters,
// while this `validate` function needs to verify
// that the phone number contains no "garbage"
// therefore the explicit `isViablePhoneNumber` check.
var input = void 0;
if ((0, _isViablePhoneNumber2.default)(number)) {
input = (0, _parse_2.default)(number, { defaultCountry: country }, metadata);
} else {
input = {};
}
找不到的功能是(0, _isViablePhoneNumber2.default)(number)
。
我真的希望能够同时使用optimize
和buildOptimizer
,因为它是一个庞大的应用程序,并且确实提高了性能。知道如何调试吗?
答案 0 :(得分:0)
将库更新到版本1.7.6并使用新功能解决了该问题。