Как отключить предупреждения об отказе в Ember.js?

Я написал приложение, использующее Ember Data. Он передает все, что он тестирует и работает, как ожидалось, однако, что-то вызывает повторное предупреждение об отказе, которое нужно бросить в консоль.

Я хотел бы знать, как отключить эти предупреждения в Ember.

Ответ 1

Вы можете просто сделать Ember.deprecate = function(){} в своем файле application.js, и это должно отключить предупреждения об устаревании ember.

Ответ 2

Всегда полезно учитывать отклонения, но если вы хотите просто отключить их, добавьте следующие 2 строки в ваш основной файл app.js.

Ember.deprecate = function(){};
Ember.warn = function(i){};

Ответ 3

Мое предложение здесь, так что вы не будете полностью пропустить предупреждения об устаревании - они там по какой-то причине, верно?

Это упрощенные версии того, что будет делать deprecate, но вход в DEBUG (чтобы вы могли легко их отфильтровать) и без stacktrace (для простоты). Они также не будут показывать повторяющиеся сообщения:

CoffeeScript

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);
  };
})();

Ответ 4

Модифицировано для версии 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);
    }
  };
})());

Ответ 5

Для Ember 3.8 ниже у меня работал код в app/initializers/deprecation.js. Это отключает устаревание при выполнении тестов. Вы можете изменить в соответствии с вашими потребностями.

import { registerDeprecationHandler } from '@ember/debug';
import config from 'happyfox-web/config/environment';

export function initialize() {
  registerDeprecationHandler((message, options, next) => {
    if (config.environment === 'test') {
      return;
    } else {
      next(message, options);
    }
  });
}

export default { initialize };

Взял это из документов

Ответ 6

Если вы ищете это в Ember> = 2.0.0, вы должны изменить это в:

Ember.Logger.warn = () => {}
Ember.Logger.deprecate = () => {}