ClojureScript bRepl вообще не отвечает

Я какое-то время возился с clojure и clojurescript, и я всегда обнаруживал, что ответ браузера крайне не отвечает. Обычно он зависает, не давая результата, или выдает исключение неработающей трубы. Теперь я в ситуации, когда он всегда отказывается работать.

Допустим, я загружаю вторую часть учебника по современным cljs и делаю все шаги, чтобы запустить страницу, загрузить скомпилированный javascript и запустить bRepl. Когда я пытаюсь оценить что-то настолько простое, как (+ 3 4), это просто не работает.

Я использую OSX 10.8.4, и моя версия leiningen — 2.3.2 на Java 1.6.0_51 Java HotSpot (TM) 64-разрядная виртуальная машина сервера. Любая помощь очень ценится.


person Frankie    schedule 03.10.2013    source источник
comment
Обычное решение этой проблемы — обновить страницу после запуска cljs repl. Из вашего вопроса неясно, следуете ли вы этому шагу, можете ли вы подтвердить?   -  person georgek    schedule 03.10.2013
comment
Я тоже так пробовал, но не работает. Интересно, есть ли какие-то зависимости очистки/обновления для leiningen или связанных с ним инструментов?   -  person Frankie    schedule 04.10.2013
comment
Попробуйте открыть страницу, к которой вы пытаетесь подключиться, в другой вкладке или браузере.   -  person michieljoris    schedule 02.02.2014


Ответы (5)


У меня тоже были проблемы с этой темой. И вот приемы, которые мне помогают:

  1. Чистые остатки: rm -rf ~/.m2/*
  2. загрузите lein deps: lein deps в корень вашего проекта
  3. Я видел это сообщение: "broken pipe", когда прошло слишком много времени с последнего взаимодействия brepl. Итак, обновите браузер и все
  4. иногда мой брепл зависал при первой попытке оценить код, снова попробуйте обновить браузер
  5. не забудьте запустить: lein cljsbuild once перед запуском брепла

Удачи

PS: В любом случае, если вы хотите получить удобный опыт работы с brepl, вам нужно взглянуть на https://github.com/cemerick/austin . Я протестировал этот brepl и отлично работает https://github.com/juanantonioruz/client.

person tangrammer    schedule 18.10.2013
comment
В итоге я использовал Остина в качестве брепла по умолчанию. Иногда я все еще получаю исключение Broken Pipe, и обновление страницы не помогает. Поэтому я просто перезапускаю реплику, а затем работает нормально. - person Frankie; 19.10.2013

Я бы предложил клонировать репозиторий modern-cljs, затем проверить ветку tutorial-02, затем очистить и перекомпилировать.

git clone https://github.com/magomimmo/modern-cljs.git
cd modern-cljs
git checkout tutorial-02
lein do clean, cljsbuild clean
lein cljsbuild once

Убедитесь, что ваш http-сервер работает (я предполагаю, что порт 3000) и его корень установлен в каталог modern-cljs/resources/public. Затем запустите подзадачу repl-listen следующим образом:

lein trampoline cljsbuild repl-listen

Дождитесь приглашения cljs. Затем перейдите по URL-адресу localhost:3000/simple.html и подождите, пока соединение с brepl будет готово.

Теперь в приглашении cljs вы сможете оценить выражения cljs. В конце концов, перезагрузите указанный выше URL.

Если это все еще не работает, попробуйте удалить репозиторий maven:

rm -rf ~/.m2/repository

и переделать все из lein do цепочки команд.

В конце концов вы можете следовать https://github.com/magomimmo/modern-cljs/blob/master/doc/tutorial-18.md#the-need-of-a-more-comfortable-brepl-опыт руководство по настройке более удобного bREPL, использующего https://github.com/cemerick/piggieback

HIH

person Magomimmo    schedule 10.10.2013

Вы должны попробовать использовать Chromium небезопасно:

  • OS X:

    open -a Chromium --args --disable-web-security

  • Линукс:

    chromium --disable-web-security

Затем зайдите на свою страницу в небезопасном браузере и попробуйте подключиться к брепл.


Объяснение:

Поскольку, хотя brepl работает на порту 9000, веб-сервер, на котором размещена страница, обязательно использует другой порт, что составляет XSS (см. [это обсуждение переполнения стека]).

Самый простой способ обойти это — небезопасно использовать Chromium для отладки, но вы можете включить XSS другими способами, если хотите.

person Matt W-D    schedule 02.06.2014

Какую версию ClojureScript вы указываете в своем проекте project.clj? Если вы не указываете конкретную версию, это, вероятно, источник ваших проблем. 0.0-1913 самая последняя.

person dnolen    schedule 06.10.2013

Я также видел полное зависание в REPL, когда я забывал вызвать repl/connect из браузера. Так как выхода нет, трудно диагностировать. Это стоит проверить, прежде чем вы попробуете более навязчивые средства.

person DavidM    schedule 02.01.2014