Ember Data を使用するアプリケーションを作成しました。すべてのテストに合格し、期待どおりに実行されていますが、何かが原因で非推奨の警告がコンソールに繰り返しスローされています。
Ember でこれらの警告を無効にする方法を知りたいです。
Ember Data を使用するアプリケーションを作成しました。すべてのテストに合格し、期待どおりに実行されていますが、何かが原因で非推奨の警告がコンソールに繰り返しスローされています。
Ember でこれらの警告を無効にする方法を知りたいです。
application.js ファイルで行うだけEmber.deprecate = function(){}
で、ember の非推奨警告が無効になります。
非推奨を検討することは常に良いことですが、それらを完全に無効にしたい場合は、メインのapp.jsファイルに次の 2 行を追加してください。
Ember.deprecate = function(){};
Ember.warn = function(i){};
ここでの私の提案は、非推奨の警告を完全に見逃さないようにするためです。警告には理由がありますよね?
これらは何deprecate
をするかの単純化されたバージョンですが、DEBUG にログを記録し (簡単にフィルターで除外できます)、スタックトレースを使用しません (単純化のため)。また、繰り返されるメッセージも表示されません。
コーヒースクリプト:
Ember.deprecate = (->
already_shown = []
(msg, test, opt)->
return false if test
if already_shown.indexOf(msg) == -1
warning = "DEPRECATION: #{msg}"
warning += " See: #{opt.url}" if opt.url
console.debug warning
already_shown.push msg
)()
JS :
Ember.deprecate = (function() {
var already_shown = [];
return function (msg, test, opt) {
if (test) return false;
if (already_shown.indexOf(msg) === -1) {
var warning = 'DEPRECATION: ' + msg;
if (opt.url) {
warning += ' See: ' + opt.url;
}
console.debug(warning);
}
already_shown.push(msg);
};
})();
Ember 2.3バージョン用に変更 ( igorsantos07に感謝)
const alreadyShownFactory = () => {
let alreadyShown = [];
return (msg, test, opt) => {
if (test)
return false;
if( alreadyShown.indexOf(msg) === -1 ) {
let warning = 'DEPRECATION: ' + msg;
if(opt && opt.url) {
warning += ' See: ' + opt.url;
}
console.warn(warning);
alreadyShown.push(msg);
}
};
};
Ember.deprecate = alreadyShownFactory();
Ember.warn = alreadyShownFactory();
//see https://guides.emberjs.com/v2.3.0/configuring-ember/handling-deprecations/
Ember.Debug.registerDeprecationHandler((() => {
let alreadyShown = [];
return (message, options, next) => {
if(alreadyShown.indexOf(message) === -1) {
next(message, options);
alreadyShown.push(message);
}
};
})());