15

Ember Data を使用するアプリケーションを作成しました。すべてのテストに合格し、期待どおりに実行されていますが、何かが原因で非推奨の警告がコンソールに繰り返しスローされています。

Ember でこれらの警告を無効にする方法を知りたいです。

4

6 に答える 6

18

application.js ファイルで行うだけEmber.deprecate = function(){}で、ember の非推奨警告が無効になります。

于 2013-10-17T20:55:51.877 に答える
11

非推奨を検討することは常に良いことですが、それらを完全に無効にしたい場合は、メインのapp.jsファイルに次の 2 行を追加してください。

Ember.deprecate = function(){};
Ember.warn = function(i){};
于 2014-06-04T05:05:20.520 に答える
7

ここでの私の提案は、非推奨の警告を完全に見逃さないようにするためです。警告には理由がありますよね?

これらは何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);
  };
})();
于 2015-05-17T18:53:16.497 に答える
6

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);
    }
  };
})());
于 2016-02-12T15:43:47.130 に答える