Ну, после некоторой отладки я обнаружил, что это на самом деле вызвано vuex и vue -router.
На самом деле я мог бы найти это раньше, если бы просто детально изучил след ошибки. Секция vue-router.esm.js?8c4f:2279
давала подсказку, но я ее не видел (мне кажется, что у меня нет опыта * 1018).
...
reactiveSetter @ vue.runtime.esm.js?2b0e:1055
normalizeProps @ vue.runtime.esm.js?2b0e:1449
mergeOptions @ vue.runtime.esm.js?2b0e:1521
Vue.extend @ vue.runtime.esm.js?2b0e:5159
extractGuard @ vue-router.esm.js?8c4f:2279
eval @ vue-router.esm.js?8c4f:2263
eval @ vue-router.esm.js?8c4f:1968
eval @ vue-router.esm.js?8c4f:1968
...
Я получал маршруты из магазина и добавлял (addRoutes () ) их к маршруту.
router.beforeEach((to, from, next) => {
...
router.addRoutes([store.getters['route/getRoute']]);
...
}
Но из-за того, что он был передан по ссылке (и я думаю, что маршрутизатор вносил в него некоторые изменения), ошибка возрастала. Маршрут пытался «мутировать хранилище vuex за пределами хранилища мутаций»
[Vue warn]: Error in callback for watcher "function () { return
this._data.$$state }": "Error: [vuex] do not mutate vuex store state outside
mutation handlers."
Я решил это путем глубокого клонирования (как показано ниже) с loda sh, но мог также использовать другое глубокое клонирование.
let routeDeepClone = _.cloneDeep([store.getters['route/getRoute']]);
router.addRoutes(routeDeepClone);
Теперь это работает очень хорошо. Надеюсь, это кому-нибудь поможет.