Серия неперехваченных ошибок типа: "xxxx" не является функцией в JavaScript, скомпилированной из ClojureScript в браузере Brave.
Я слежу за примерами кода из книги " Веб-разработка с Clojure, 3-е издание". В настоящее время прорабатываются примеры использования ClojureScript для создания одностраничного приложения с Reagent и Ajax. Скомпилированный Javascript работает нормально, пока я не попытаюсь отправить данные из формы на сервер. Это должно сломаться, потому что я не добавил ни в один код Ajax, чтобы прикрепить токен csrf к почтовому запросу, и автор хочет рассказать, как консоль js может использоваться для входа в разработку, но это не так. ломается, как ожидалось. Я должен получить что-то вроде этого:
error:{:status 403,
:status-text "Forbidden",
:failure :error,
:response "<h1>Invalid anti-forgery token</h1>"}
Я удостоверился, что использую последнюю версию всех своих зависимостей и плагинов. Недавно я переключился на Brave, чтобы проверить это, мне это очень нравится, но я столкнулся с несколькими подобными проблемами, и когда я тестирую это в Chrome, он работает правильно (ломается, как ожидалось).
Это код в моем файле core.cljs:
(:require [reagent.core :as r]
[ajax.core :refer [GET POST]]))
(defn send-message!
[fields]
(POST "/message"
{:params @fields
:handler #(.log js/console (str "response:" %))
:error-handler #(.log js/console (str "error:" %))}))
(defn message-form
[]
(let [fields (r/atom {})]
(fn []
[:div
[:div.field
[:label.label {:for :name} "Name"]
[:input.input
{:type :text
:name :name
:on-change #(swap! fields assoc :name (-> % .-target .-value))
:value (:name @fields)}]]
[:div.field
[:label.label {:for :message} "Message"]
[:textarea.textarea
{:name :message
:value (:message @fields)
:on-change #(swap! fields assoc :message (-> % .-target .-value))}]]
[:input.button.is-primary
{:type :submit
:on-click #(send-message! fields)
:value "Comment"}]
[:p "Name: " (:name @fields)]
[:p "Message: " (:message @fields)]])))
(defn home
[]
[:div.content
[:div.column.is-centered
[:div.column.is-two-thirds
[:div.columns
[:div.column
[message-form]]]]]])
(r/render [home] (.getElementById js/document "content"))
Когда я открываю страницу в Brave, при загрузке я получаю эти два сообщения:
undefined
at log.js:38
Uncaught TypeError: goog.log.getLogger is not a function
at xhrio.js:249
(anonymous) @ xhrio.js:249
Javascript по-прежнему работает нормально, но когда я нажимаю кнопку "Отправить", я получаю эти две ошибки, которые, как я подозреваю, могут быть в коде закрытия Google? Не уверен:
at goog.net.XhrIo.ajax$protocols$AjaxImpl$_js_ajax_request$arity$3 (xhrio.cljs:30)
at ajax$protocols$_js_ajax_request (protocols.cljc:6)
at ajax$simple$raw_ajax_request (simple.cljc:64)
at ajax$simple$ajax_request (simple.cljc:67)
at ajax$easy$easy_ajax_request (easy.cljc:116)
at Function.cljs$core$IFn$_invoke$arity$variadic (core.cljc:75)
at ajax$core$POST (core.cljc:75)
at guestbook$core$send_message_BANG_ (core.cljs:7)
at core.cljs:30
at HTMLUnknownElement.callCallback (react-dom.inc.js:341)
(anonymous) @ xhrio.cljs:30
ajax$protocols$_js_ajax_request @ protocols.cljc:6
ajax$simple$raw_ajax_request @ simple.cljc:64
ajax$simple$ajax_request @ simple.cljc:67
ajax$easy$easy_ajax_request @ easy.cljc:116
(anonymous) @ core.cljc:75
ajax$core$POST @ core.cljc:75
guestbook$core$send_message_BANG_ @ core.cljs:7
(anonymous) @ core.cljs:30
callCallback @ react-dom.inc.js:341
invokeGuardedCallbackDev @ react-dom.inc.js:391
invokeGuardedCallback @ react-dom.inc.js:448
invokeGuardedCallbackAndCatchFirstError @ react-dom.inc.js:462
executeDispatch @ react-dom.inc.js:594
executeDispatchesInOrder @ react-dom.inc.js:616
executeDispatchesAndRelease @ react-dom.inc.js:719
executeDispatchesAndReleaseTopLevel @ react-dom.inc.js:727
forEachAccumulated @ react-dom.inc.js:701
runEventsInBatch @ react-dom.inc.js:744
runExtractedPluginEventsInBatch @ react-dom.inc.js:875
handleTopLevel @ react-dom.inc.js:6026
batchedEventUpdates @ react-dom.inc.js:2342
dispatchEventForPluginEventSystem @ react-dom.inc.js:6121
dispatchEvent @ react-dom.inc.js:6150
unstable_runWithPriority @ react.inc.js:2820
runWithPriority$2 @ react-dom.inc.js:11443
discreteUpdates$1 @ react-dom.inc.js:21810
discreteUpdates @ react-dom.inc.js:2357
dispatchDiscreteEvent @ react-dom.inc.js:6104
react-dom.inc.js:481
Uncaught TypeError: G__20367.setTimeoutInterval is not a function
at goog.net.XhrIo.ajax$protocols$AjaxImpl$_js_ajax_request$arity$3 (xhrio.cljs:30)
at ajax$protocols$_js_ajax_request (protocols.cljc:6)
at ajax$simple$raw_ajax_request (simple.cljc:64)
at ajax$simple$ajax_request (simple.cljc:67)
at ajax$easy$easy_ajax_request (easy.cljc:116)
at Function.cljs$core$IFn$_invoke$arity$variadic (core.cljc:75)
at ajax$core$POST (core.cljc:75)
at guestbook$core$send_message_BANG_ (core.cljs:7)
at core.cljs:30
at HTMLUnknownElement.callCallback (react-dom.inc.js:341)
(anonymous) @ xhrio.cljs:30
ajax$protocols$_js_ajax_request @ protocols.cljc:6
ajax$simple$raw_ajax_request @ simple.cljc:64
ajax$simple$ajax_request @ simple.cljc:67
ajax$easy$easy_ajax_request @ easy.cljc:116
(anonymous) @ core.cljc:75
ajax$core$POST @ core.cljc:75
guestbook$core$send_message_BANG_ @ core.cljs:7
(anonymous) @ core.cljs:30
callCallback @ react-dom.inc.js:341
invokeGuardedCallbackDev @ react-dom.inc.js:391
invokeGuardedCallback @ react-dom.inc.js:448
invokeGuardedCallbackAndCatchFirstError @ react-dom.inc.js:462
executeDispatch @ react-dom.inc.js:594
executeDispatchesInOrder @ react-dom.inc.js:616
executeDispatchesAndRelease @ react-dom.inc.js:719
executeDispatchesAndReleaseTopLevel @ react-dom.inc.js:727
forEachAccumulated @ react-dom.inc.js:701
runEventsInBatch @ react-dom.inc.js:744
runExtractedPluginEventsInBatch @ react-dom.inc.js:875
handleTopLevel @ react-dom.inc.js:6026
batchedEventUpdates @ react-dom.inc.js:2342
dispatchEventForPluginEventSystem @ react-dom.inc.js:6121
dispatchEvent @ react-dom.inc.js:6150
unstable_runWithPriority @ react.inc.js:2820
runWithPriority$2 @ react-dom.inc.js:11443
discreteUpdates$1 @ react-dom.inc.js:21810
discreteUpdates @ react-dom.inc.js:2357
dispatchDiscreteEvent @ react-dom.inc.js:6104
Есть идеи, почему это работает должным образом в Chrome, но не в Brave?