4

我几乎遇到了这个错误: AngularJS ngSanitize Error

简短版本:“小写字母不是函数”。

虽然我的应用程序将 AngularJS 强制执行为 1.4.9,但我们没有强制执行 angular-sanitize,因此它解析为 1.7.0,并且在该版本的 AngularJS 上,小写函数不再存在,从而产生错误。

可能通过将 angular-sanitize 强制为固定版本可以解决此问题,但我想超越修复它并了解导致问题的原因以及原因,因为我发现了一些不一致之处。

  • AngularJS 被强制到 1.4.9。bower-components 文件夹包含此版本,编译后的 build 文件夹也包含此版本,Chrome 上的开发人员面板显示仅获取此版本。这个版本确实有小写的方法。

  • Angular-sanitize 有 angular 1.7.0 作为依赖项,但它从未下载过,永远不会。不在整个项目的任何单个文件夹或子文件夹中,不在编译时,也不在 Chrome 中。所以我猜他唯一可以访问的angular.js是 1.4.9,它确实有小写的方法。

如果唯一可用的angular.js仍然具有该方法,我不太明白为什么会出现“小写不是函数”错误。另外我不明白为什么 angular-sanitize 1.7.0 要求 angular 1.7.0 在 AngularJS 1.7.0 上使用不存在的方法(Angular 开发人员错误?但我很难相信。)

sanitize 可能正在以某种方式下载和访问 angular 1.7.0,但我想知道如何。只是出于好奇。并且还要确认这是否是 Angular 开发人员的错误,或者我是否遗漏了一些东西。

4

1 回答 1

1

它在官方Angular 1.6 到 1.7 迁移指南中进行了解释:

由于1daa4fangular.lowercase,辅助函数angular.uppercase已被删除。

自 1.5.0 起,这些函数已被弃用。它们在内部使用,但不应公开,因为它们包含特殊的语言环境处理(用于土耳其语)以保持内部一致性,而不管用户设置的语言环境如何。

对于特殊情况,开发人员通常应该使用内置的toLowerCaseandtoUpperCasetoLocaleLowerCaseand 。toLocaleUpperCase

此外,我们通常不鼓励在应用程序代码中使用 angular.x 助手。

于 2018-05-14T22:21:15.673 回答