15

我编写了一个使用 Ember Data 的应用程序。它通过了所有测试并按预期运行,但是,某些东西导致控制台反复出现弃用警告。

我想知道如何在 Ember 中禁用这些警告。

4

6 回答 6

18

您可以Ember.deprecate = function(){}在您的 application.js 文件中执行此操作,并且应该禁用 ember 弃用警告。

于 2013-10-17T20:55:51.877 回答
11

考虑弃用总是好的,但如果您只想完全关闭它们,请将以下 2 行添加到您的主app.js文件中。

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 回答
3

对于下面的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 };

文档中获取这个

于 2019-04-10T09:03:53.030 回答
0

如果你在 Ember >=2.0.0 中寻找这个,你必须改变它:

Ember.Logger.warn = () => {}
Ember.Logger.deprecate = () => {}
于 2018-04-09T13:29:48.863 回答