Uncaught TypeError:angular.lowercaseは関数ではありません
私のangularjsアプリケーションでこのエラーが発生し、アプリケーション全体が実行されていません。これはtextAngular-sanitize.js:413
で表示されます。
デバッグできないため、angular.jsと同じバージョンを使用しようとしましたが、成功しませんでした。これに対する解決策を提供してください。コンソールでこのエラーメッセージ以外に共有するものはありません。
textAngular-sanitize.js:413 Uncaught TypeError: angular.lowercase is not a function
at parseEndTag (textAngular-sanitize.js:413)
at htmlParser (textAngular-sanitize.js:378)
at textAngular-sanitize.js:147
at textAngularSetup.js:443
at Object.invoke (angular.js:5093)
at angular.js:4892
at forEach (angular.js:374)
at createInjector (angular.js:4892)
at doBootstrap (angular.js:1923)
at bootstrap (angular.js:1944)
ご覧のとおり、 here 、angularはlowercase
utilメソッドを廃止しました。
使用するライブラリはまだ更新されていないため、1.6.7より前のangularバージョンとのみ互換性があります。ただし、このエラーが発生するため、使用するangularバージョンの方がおそらく高いでしょう。
あなたはどちらか
(A)bower.jsonでangularを1.6.7にダウングレードします:
"dependencies": {
"angular": "1.6.7",
...
}
"resolutions": {
"angular": "1.6.7"
}
(B)これらのメソッドを追加して、簡単な回避策を作成します:
angular.lowercase = text => text.toLowerCase();
これはangularが読み込まれた後、アプリが起動する前に行われるようにしてください。
Angular 1.7。*にはまだ小文字の機能がありますが、名前は$$ lowercaseに変更されました。これは可能な回避策です。 バイヤーはAngularドキュメントに基づいて注意してください 。
angular.module('MyApp').config(function() {
angular.lowercase = angular.$$lowercase;
});
Ovidiu Dolhaの答えは私をほとんどそこに連れて行ってくれました。 lowercase
関数の廃止予定の実装を見ると、もう少しです。このshim実装は、私のためにトリックを行いました:
/**
* @brief Shim for textAngular in order to make it compatible with the latest
* version of angularjs
*/
function lowercase(string) {
return (typeof string === 'string') ? string.toLowerCase() : string;
}
// Angular deprecated the lowercase function as of v1.6.7. TextAngular hasn't
// updated to reflect this
angular.lowercase = lowercase;
私のように苦労している他の人々を助けるために私の意見を共有したいと思います、主な問題はangularJSがライブラリから小文字と大文字の関数を公式に削除し、textAngular-sanitize.jsを使用している人々がtextangularこの問題を解決するライブラリにこのメソッドがまだあります。
プロジェクトからtextAngular-sanitize.jsを削除するか、以下のように、angular.moduleがロードされる前にapp.jsにOvidiu Dolhaコードを含めることができます。
angular.uppercase=function(text){
return text.toUpperCase();
}
angular.lowercase=function(text){
return text.toLowerCase();
}
angular.module('sampleApp', ....)
Ovidiu Dolhaが提供するコード
angular.lowercase = text => text.toLowerCase();
として書くことができます
angular.lowercase=function(text){
return text.toLowerCase();
}
両方とも機能します。ありがとうございました。
angular 1.7.5に更新したときに同様の問題が見つかりました。私の解決策は、角度サニタイズを更新することで、問題は修正されました。 angular-sanitize
AngularJS v1.7.5を使用しています。私のコントローラーでは、以下のコードを使用して文字列を小文字に変換しました。
function myCtrl($scope, $filter)
{
var sampleText = "THIS IS TEST";
var test = $filter('lowercase')(sampleText);
}
コントローラに$ filterを挿入し、同じものを使用して小文字に変換します。
別の適切なソリューションは、textAngularをtestAngularJsで suggested として置き換えることです。
npm install textangularjs
typeScriptとリンター(私の場合はtslint + standard)でangularjsを使用している場合、正しい回避策は次のとおりです。
if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text