Как устранить неперехваченную ошибку типа: clojure не определен

#clojurescript #figwheel

Вопрос:

Я сделал что-то с моим проектом clojurescript, который выдает эту ошибку, я использую figwheel-main с deps.edn, не совсем уверен, что искать, чтобы решить эту проблему, похоже, что сам clojurescript не найден при запуске в браузере

 Uncaught TypeError: clojure is undefined
    option_values_fmt http://localhost:9500/cljs-out/main.js:3842
    cljs$core$IReduce$_reduce$arity$3 http://localhost:9500/cljs-out/main.js:2534
    cljs$core$IFn$_invoke$arity$3 http://localhost:9500/cljs-out/main.js:1626
    reduce http://localhost:9500/cljs-out/main.js:1623
    option_values_fmt http://localhost:9500/cljs-out/main.js:3842
    <anonymous> http://localhost:9500/cljs-out/main.js:3850
 

мой файл figwheel выглядит так, одно из изменений, которые я внес, состоит в том, чтобы ввести множество требований в :дополнительные депы вместо под :депы clojurescript и clojure по-прежнему включены в корень.

 {:output-to "resources/public/cljs-out/main.js"
 :optimizations :none
 ;:pseudo-names true
 :pretty-print true
 :source-map true
 :source-map-timestamp true
 :devcards true
 :main webpage.core}
 

Что я должен искать, что может вызвать эту ошибку ?

Ответ №1:

Скорее всего, это проблема где-то в вашем коде, а не в ваших зависимостях.

Это, например, может произойти, если вы используете полную ссылку (например (clojure.string/anything ...) ), не потребовав предварительно соответствующего пространства имен (т. Е. (:require [clojure.string ...]) в вашей ns форме). Требование гарантирует, что код действительно загружен и доступен до выполнения вашего кода.

Комментарии:

1. Вот и избавился от этой ошибки, здорово, интересно, почему это сработало раньше, это оставило меня с неперехваченной ошибкой ссылки: goog не определен, но я могу еще немного покопаться в этом.

2. Возможно, вы полагались на другое пространство имен, которое также ссылалось на загрузку пространства имен до проблемного. Пока пространство имен загружено заранее, все в порядке. Требование гарантирует, что вещи всегда загружаются в правильном порядке. отсутствие определения goog обычно означает, что goog/base.js файлы не были загружены должным образом. При использовании :main это не должно быть проблемой, хотя, поскольку сгенерированный main.js должен это делать. Может возникнуть :asset-path проблема.

3. немного раздражает, что он может компилироваться, когда возникает проблема с требованиями, google не определен, я решил, изменив оптимизацию с » нет » на «простой», это проблемы, с которыми я столкнулся при попытке развертывания в основном, спасибо за помощь

4. @Оли, это кажется неправильным. Вы уверены, что с вашей стороны не пропущено никаких требований/импорта для вещей goog? Например, a git grep goog должен дать вам некоторые сведения об этом в вашей кодовой базе.

5. этот поиск приносит только до константы.он:(внимание-определяем делать-приложение-АПИ » 127.0.0.1:3000″ ), я принял его, потому что оптимизацию не создает много файлов и пытается импортировать их, используя хорошие библиотеки, некоторые объединить все их в один так что я предполагаю, что это что-то связано с его другой пример, где ошибка не то, что полезно