虽然在任何特定情况下都有关于如何调试错误的提示和线索,但我还没有找到一个通用的Ember策略。
例如,加载路径时出现typeError:
Assertion failed: Error while loading route: TypeError: 'undefined' is not an object (evaluating 'window.router.lander')
(忽略我尝试访问window.router.lander的事实。它无关紧要)
为什么Ember在发生此错误时不会告诉您加载哪条路线?或者它是发生在afterModel()还是activate()?什么是找到那种情境信息的一般策略?
到目前为止,我所拥有的只是添加了一堆分散在各处的console.logs。例如,上面的错误:
1)在我的代码中找到所有出现的window.router.lander
2)在第一次出现之前,添加一个console.log('它是第一次出现?'),并在第一次出现后放入console.log('它不是第一次出现') 39)
3)每次出现都这样做
4)刷新。其中一个是第n次出现?'没有更接近,现在你知道错误发生在哪里。
答案 0 :(得分:2)
为了更好地进行调试,您可以通过带有LOG_TRANSITIONS
和/或LOG_TRANSITIONS_INTERNAL
属性的创建应用启用转换日志记录:
window.App = Ember.Application.create({
// Basic logging, e.g. "Transitioned into 'post'"
LOG_TRANSITIONS: true,
// Extremely detailed logging, highlighting every internal
// step made while transitioning into a route, including
// `beforeModel`, `model`, and `afterModel` hooks, and
// information about redirects and aborted transitions
LOG_TRANSITIONS_INTERNAL: true
});
参考:http://emberjs.com/guides/understanding-ember/debugging/
此外,您可以使用canary build提供详细的错误堆栈: http://emberjs.com/builds/#/canary
答案 1 :(得分:1)
当涉及到模型钩子中的错误或它返回的承诺时,Ember并不是特别有用。我确信我已经读过其中一个问题(或http://discuss.emberjs.com/我不确定)这是一个他们正在工作的公开问题。
我所做的是使用Chrome开发者工具调试问题(而不仅仅是控制台登录)。根据我的经验,它通常是:
then
函数之一内的错误我希望它可以帮到你!