Cljs: compilerexception java.lang.runtimeexception: feature должно быть ключевым словом

Я получаю эту ошибку всякий раз, когда у меня есть такой код в файле .cljc. Я не нашел ответа, когда искал.

(defn foo
  []
  #?(:cljs
      (f "1")
      (g "2")))
2
0
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я обнаружил, что в #?(:cljs ...) или #?(:clj ...) мы можем указать только одну форму.

Следовательно, для нескольких функций мы можем использовать, например, do.

(defn foo
  []
  #?(:cljs
      (do (f "1")
          (g "2")))

Обновлено: 9/3/21

применяется не только к функциям, но в более общем плане к формам

Например. (не работает)

(try
  (something...)
  (catch #(:clj Exception e (error-stuff...)
         #(:cljs :default e (error-stuff...)

должно быть

(try
  (something...)
  #(:clj (catch Exception e (clj-error-stuff e)))
  #(:cljs (catch :default e (cljs-errors-stuff e)))

Другие вопросы по теме