CableReady (Rails) Базовый случай, дающий загадочное сообщение об ошибке
cable_ready 4.5.0 рельсы 6.1.4.1 рубин 3.0.2p107
Это простой пример из основного руководства (https://www.youtube.com/watch?v=F5hA79vKE_E). Я подозреваю, что получаю ошибку, потому что либо cable_ready, либо rails немного изменились и создали крошечную несовместимость.
Я получаю эту ошибку в консоли JS:
Он срабатывает, когда в моем контроллере я прошу кабель готов:
cable_ready["timeline"].console_log(message: "***** cable ready post created")
Что приводит к моему timeline_channel:
received(data) {
console.log("******** Received data:", data.operations)
if (data.cableReady) CableReady.perform(data.operations)
}
Моя интерпретация заключается в выполнении этой строки в строке 13 cable_ready.js:
operations.forEach(function (operation) {
if (!!operation.batch) batches[operation.batch] = batches[operation.batch] ? ++batches[operation.batch] : 1;
});
Находит что-то в полученных данных, что ему не нравится.
Вот где мой след заканчивается. Может ли кто-нибудь увидеть, что я делаю неправильно, или сказать, какой еще код вы бы хотели, чтобы я включил?
1 ответ
Решение: понизьте версию библиотеки javascript cable_ready.
Ранее (может быть, год назад) я делал это руководство , используя CableReady 4.5, Ruby 2.6.5 и Rails 6.0.4, и тогда, как и сегодня, оно работало как шарм.
Но сегодня я снова попробовал это руководство в дублирующем проекте - те же версии CR, Ruby и Rails, и теперь я получаю ошибки консоли Java, похожие на ваши.
TypeError: undefined is not a function (near '...operations.forEach...')
perform -- cable_ready.js:13
received -- progress_bar_channel.js:8
Я посмотрел на вывод
yarn list
и увидел, что версия cable_ready 5.0.0-pre8 в плохом проекте и 5.0.0-pre1 в хорошем проекте. Понижение может быть выполнено с помощью
yarn add cable_ready@^5.0.0-pre1
в папке плохого проекта, и теперь оба проекта работают.
К сведению других новичков, таких как я, пытающихся понять, как работает CableReady: в этом руководстве приводится еще один пример CableReady, который также был исправлен таким же образом.