Я видел странное исключение в функции onData() контроллера маршрута в железе-маршрутизаторе. Исключение происходит только после того, как я внес изменения в файл, который, конечно, заставляет метеорит перезапускать приложение. Я привел образец в github, который демонстрирует проблему здесь: https://github.com/benmonro/iron-router-bugИсключение исключения железного маршрутизатора в onData
Если вы добавите человека, нажав кнопку «Отправить», затем нажмите на имя этого человека, все будет нормально загружено. Однако, если вы затем внесете изменения в некоторые js (скажем, добавьте комментарий). Meteor будет перезагружаться, и вы получите исключение в методе onData(), который пытается использовать свойство данных, возвращаемых функцией 'data().
Исключение здесь:
> Exception in defer callback: TypeError: Cannot read property 'name' of
> undefined
> at RouteController.extend.onData (http://localhost:3000/irDataBug.js?8327f0bf1bedee2437ec14bc4509d8f7e85079ab:33:19)
> at RouteController.runHooks (http://localhost:3000/packages/iron-router.js?e9fac8016598ea034d4f30de5f0d356a9a24b6c5:827:16)
> at http://localhost:3000/packages/iron-router.js?e9fac8016598ea034d4f30de5f0d356a9a24b6c5:2137:16
> at Utils.extend._run.withNoStopsAllowed (http://localhost:3000/packages/iron-router.js?e9fac8016598ea034d4f30de5f0d356a9a24b6c5:2098:21)
> at _assign._compute (http://localhost:3000/packages/deps.js?4a82362ae66e863a1c1a8b0a5fec6f665e2038d1:228:38)
> at new Deps.Computation (http://localhost:3000/packages/deps.js?4a82362ae66e863a1c1a8b0a5fec6f665e2038d1:160:10)
> at Object._assign.autorun (http://localhost:3000/packages/deps.js?4a82362ae66e863a1c1a8b0a5fec6f665e2038d1:380:13)
> at http://localhost:3000/packages/iron-router.js?e9fac8016598ea034d4f30de5f0d356a9a24b6c5:2134:12
> at Utils.extend._run.withNoStopsAllowed (http://localhost:3000/packages/iron-router.js?e9fac8016598ea034d4f30de5f0d356a9a24b6c5:2098:21)
> at _assign._compute (http://localhost:3000/packages/deps.js?4a82362ae66e863a1c1a8b0a5fec6f665e2038d1:228:38)
Я смущен. Почему он вызывает «onData», когда нет данных? Если данные не готовы, не нужно ли просто ждать или тайм-аут вместо того, чтобы просто возвращать null? – Ben
Это хороший вопрос. :) Возможно, вы захотите записать проблему и/или начать копать в IR-код, чтобы выяснить, почему. –