我写了一个使用Ember Data的应用程序。它正在通过所有测试并按预期运行,但是,有些事情导致重复的弃用警告被抛入控制台。
我想知道如何在Ember中禁用这些警告。
答案 0 :(得分:17)
您只需在application.js文件中执行Ember.deprecate = function(){}
即可禁用ember弃用警告。
答案 1 :(得分:11)
考虑弃用率总是好的,但如果您想完全关闭它们,请将以下两行添加到主 app.js 文件中。
Ember.deprecate = function(){};
Ember.warn = function(i){};
答案 2 :(得分:6)
我的建议在这里,所以你不会完全错过弃用警告 - 他们是有原因的,对吗?
这些是deprecate
将执行的简化版本,但是记录到DEBUG(因此您可以轻松地过滤它们)并且没有堆栈跟踪(为简单起见)。他们也不会反复显示消息:
<强>的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);
};
})();
答案 3 :(得分: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);
}
};
})());
答案 4 :(得分:1)
对于 app / initializers / deprecation.js 中的以下 Ember 3.8 代码,它为我工作。这将在运行测试时禁用弃用。您可以根据需要进行修改。
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 };
从docs
答案 5 :(得分:0)
如果你在Ember&gt; = 2.0.0中寻找这个,你必须改变它:
Ember.Logger.warn = () => {}
Ember.Logger.deprecate = () => {}