Устранение неполадок :: CIDER Docs
REPL не запускается
Убедитесь, что ваша версия CIDER соответствует версии cider-nrepl
. Проверять
содержимое буфера *Messages*
для ошибок, связанных с CIDER. Вам следует
также проверьте сообщения nREPL, передаваемые между CIDER и nREPL в *nrepl-сообщений*
. Если вы не видите там ничего полезного, самое время привести
из больших пушек.
Отладка инициализации REPL
Для отладки инициализации REPL CIDER рекомендуется подключиться к одному из его
точки входа. Добавить точку останова на cider-make-repl
( C-u C-M-x , в то время как
в его теле). В следующий раз, когда вы запустите CIDER, вы попадете в отладчик и
вы можете идти вперед, пока не найдете проблему.
Отсутствует
*nrepl-messages*
буфер Регистрация сообщений nREPL не включена по умолчанию. Установите nrepl-log-messages
на t
чтобы активировать его. В качестве альтернативы вы можете использовать M-x .
nrepl-toggle-message-logging
cider-debug
жалуется, что «не удалось инструментировать…»В буфере REPL введите следующее.
your.namespace> (ns cider.nrepl.middleware.util.instrument) cider.nrepl.middleware.util.instrument> (def verbose-debug true)
Это заставит CIDER печатать расширенную информацию в буфер REPL, когда вы попробуйте отладить выражение (например, с помощью C-u C-M-x ). Сообщить о проблеме и скопируйте эту информацию.
REPL перестает работать, когда какая-то функция возвращает URL-адрес
Скорее всего, вы столкнулись с проблемой промежуточного программного обеспечения типа контента
. Как правило, это
легко подтвердить, проверив stracktrace:
user> (java.net.URI. "mailto:[email protected]") #object[java.net.URI 0x36966ca2 "mailto:[email protected]"]ОШИБКА: необработанное сообщение обработки исключения обработчика REPL {:op slurp, :url mailto:[email protected], :session 69c4d8e1-7bb4-45ad-8075-d21995fd50ab, :id 1579} java.net.UnknownServiceException: протокол не поддерживает ввод на java.base/java.net.URLConnection.getInputStream(URLConnection.java:840) в cider.nrepl.middleware.slurp$slurp_url_to_content_PLUS_body.invokeStatic(slurp.clj:100) на cider.nrepl.middleware.slurp$slurp_url_to_content_PLUS_body.invoke(slurp.clj:82) в cider.nrepl.middleware.slurp$handle_slurp.invokeStatic(slurp.clj:117) в cider.nrepl.middleware.slurp$handle_slurp.invoke(slurp.clj:109)
Вы можете отключить промежуточное ПО следующим образом:
(setq cider-repl-use-content-types t)
Оно отключено по умолчанию, начиная с CIDER 0.25.
Зависания и зависания при отладке
Иногда команда CIDER может зависнуть на некоторое время (например, из-за ошибки или
проблема с конфигурацией).
Do M-x
переключение-отладка-при-выходе
Воспроизвести проблему
Нажмите C-g примерно через 10 секунд после зависания
Это вызовет обратную трассировку со всем стеком функций, включая аргументы функции. Таким образом, вы должны быть в состоянии выяснить, что происходит (или в минимум того, что требуется).
Предупреждение о том, что вы должны использовать более новый nREPL
В настоящее время CIDER требует для правильной работы как минимум nREPL 0.6. Когда приходит nREPL
в комплекте с Leiningen и Boot, время от времени вам, возможно, придется переопределять
предоставленную ими версию (например, если вы вынуждены использовать более старую версию
Leiningen, или еще нет релиза, объединяющего требуемую версию nREPL).
profiles.clj
, чтобы установить правильную зависимость:{:repl {:dependencies [[nrepl/nrepl "x.y.z"]]}}
Процедура для Boot очень похожа.
Убедитесь, что вы добавили более новую зависимость nREPL к ключу :dependencies вместо этого.
of :plugins (где находится плагин cider-nrepl Lein). Это довольно распространенное
ошибка. |
Как правило, рекомендуется использовать новейшую версию nREPL с CIDER, поскольку ошибки исправляются. практически в каждом выпуске.
Отсутствует функция clojure-… после обновления CIDER
Скорее всего, вы обновили CIDER, не обновив также clojure-mode
.
CIDER зависит от clojure-mode
версия clojure-mode
.
Я обновил CIDER, используя
package.el
, и он сломался Встроенный менеджер пакетов не идеален и иногда дает сбои. Если вы
только что обновился и обнаружил ошибку, вы должны попробовать следующее, прежде чем
открытие вопроса: перейти в Каталог .emacs.d/elpa
, удалите все папки
связанных с CIDER, перезапустите Emacs, а затем переустановите отсутствующие пакеты. Примечание
что порядок здесь имеет значение.
Я обновил CIDER с помощью
package.el
и ничего не изменилосьEmacs не загружает новые файлы, он только устанавливает их на диск. Чтобы увидеть эффект изменений вы должны перезапустить Emacs.
CIDER жалуется на версию
cider-nrepl
Это предупреждение отображается в буфере REPL при его запуске и обычно выглядит так:
ВНИМАНИЕ: CIDER 0.18.0 требует cider-nrepl x.y.z, но в настоящее время вы используете cider-nrepl a.b.c. Некоторые функции могут работать некорректно!
, где a.
может быть актуальной версией, например b.c
0.17.0
, или может быть не установлен
или nil
.
Решение этой проблемы зависит от того, что вы видите и что делаете.
Вы видите число вроде
X.X.X
и начинаете REPL с cider-connect
В вашем проекте указана неверная версия промежуточного программного обеспечения cider-nrepl. См. инструкции в разделе «Настройка промежуточного программного обеспечения».
Вы видите
не установлен
или nil
, и вы запускаете REPL с cider-connect
Чтобы использовать cider-connect
, вам нужно добавить промежуточное ПО cider-nrepl в свой проект. См.
инструкции
в разделе «Настройка промежуточного программного обеспечения».
Вы видите
не установлен
или nil
, и вы начинаете REPL с cider-jack-in
Выполните
C-h v cider-inject-dependencies-at-jack-in
и убедитесь, что эта переменная не равна нулю.Убедитесь, что ваш проект зависит как минимум от Clojure
1.7.0
.Если вы используете Leiningen, убедитесь, что ваш
lein --version
не ниже2.9.0
.Если вы используете Boot и изменили
cider-boot-parameters
, вероятно, причина в этом.
Если вышеуказанное не работает, вы можете попробовать указать промежуточное ПО cider-nrepl вручную, согласно инструкции в разделе «Настройка промежуточного программного обеспечения».
Вы видите число вроде
X.X.X
, и вы запускаете REPL с cider-jack-in
Это означает, что вы вручную добавляете промежуточное ПО cider-nrepl в свой проект,
но не стоит этого делать, потому что сидр-джек-ин
уже делает это для
ты. Просмотрите следующие файлы и убедитесь, что вы удалили все ссылки на cider-nrepl
и nrepl
: project.clj
, build.
, boot
~/.lein/profiles.clj
и ~/.boot/profile.boot
.
Пакет clj-refactor
обычно внедряет собственное ПО промежуточного слоя в cider-jack-in
, как и сам CIDER. Обычно это не
проблема, если вы используете совместимые версии CIDER и clj-refactor
, но если вы получаете какую-то ошибку, вероятно, это не так
дело. У вас есть два варианта, чтобы решить эту проблему:
(setq cljr-inject-dependencies-at-jack-in nil)
Номера столбцов друг за другом
Emacs и Clojure различаются индексацией номеров столбцов — Emacs начинается
считая с 0, а Clojure — с 1. Соответственно, cider-nrepl
ПО промежуточного слоя использует индексацию, основанную на 1, и все преобразования в индексацию, основанную на 0, должны
обрабатываться на стороне клиента. См. https://github.com/clojure-emacs/cider/issues/2852.
Пустые трассировки стека Java
Иногда JVM может удалить некоторые фреймы стека, что приводит к отсутствию трассировки стека
информация, отображаемая в буфере ошибок CIDER.
Это вызвано оптимизацией JVM ( OmitStackTraceInFastThrow
, включено
default), который оптимизирует «встроенные» исключения, которые выбрасываются достаточно часто.
быть кэшированным и не иметь трассировки стека.
Вы можете отключить оптимизацию, добавив флаг JVM -XX:-OmitStackTraceInFastThrow
на что угодно
команду, которую вы используете для запуска nREPL.
В частности, добавив его в файл deps.edn
под псевдонимом (например, :dev
)
--- {: псевдонимы {:dev {:jvm-opts ["-XX:-OmitStackTraceInFastThrow"] ...}}} ---
Или настроив параметры подключения.
--- (setq cider-clojure-cli-параметры "-J-XX:-OmitStackTraceInFastThrow") ---
Лейнинген отключает OmitStackTraceInFastThrow по умолчанию. |
Если вы получаете какие-либо ошибки, связанные с rich-classpath
при выполнении cider-jack-in
, вы можете отключить
интеграция обогащения-класса
выглядит следующим образом:
(setq cider-enrich-classpath nil)
Навигация к источникам JDK не работает
Во-первых, убедитесь, что вы используете обогащение-класса.
cider-enrich-classpath
должен быть правдивым.
Если вы запускаете свой собственный процесс repl, он должен иметь подключаемый модуль rich-classpath Leiningen или
обертка.
Если вы работаете в Linux и по-прежнему не можете перейти к источнику встроенных методов, таких как .toUpperCase
, вы
возможно, не установлены исходники JDK. Пока вы на нем — это хорошо
также установите Javadocs JDK. В Debian/Ubuntu:
$ sudo apt install openjdk-17-source openjdk-17-doc
В Red Hat/Fedora/CentOS:
$ sudo dnf install java-17-openjdk-src java-17-openjdk-javadoc
В Guix:
$ guix package -i openjdk:jdk
В Windows и macOS исходный код JDK поставляется вместе с JDK. |
Нажатие
RET
в REPL не оценивает формыВы пользователь Paredit? Вы включили буферы REPL?
В последних версиях Paredit (25+) RET
привязан к paredit-RET
. Это может вызвать неожиданное
поведение в repl, когда
paredit-mode
включен, например. кажется, что он зависает после удара RET
вместо оценки последней формы.
Вы можете отключить это поведение Paredit, добавив в файл init.el
следующее:
(define-key paredit-mode-map (kbd «RET») nil)
Cider — альтернативный клиент Apple Music для Windows и Linux
Apple Music теперь предлагается на несколько платформ, включая не только операционные системы Apple, но также Android и Windows. Однако в Windows возможности Apple Music далеко не самые лучшие, поскольку пользователи по-прежнему полагаются на iTunes. Имея это в виду, группа разработчиков создала Cider — новый клиент Apple Music с открытым исходным кодом для Windows, Linux и даже macOS.
Как и многие другие клиенты Apple Music, Cider основан на официальном Apple MusicKit API. Приложение было создано с помощью Electron и Vue.js, поэтому оно может работать как на Windows, так и на macOS. Хотя пользователи Mac могут не чувствовать необходимости иметь альтернативный клиент Apple Music, те, у кого есть ПК с Windows, могут попробовать приложение.
iTunes для Windows предлагает только базовые возможности Apple Music. Например, в нем отсутствуют синхронизированные по времени тексты песен, которые были добавлены в Apple Music на iOS, macOS и даже Android много лет назад.
Cider не только предоставляет эти функции, но также имеет современный и настраиваемый интерфейс, который выглядит намного лучше, чем iTunes. У него даже есть некоторые функции, которых нет даже в официальном приложении Apple Music, например, возможность следить за исполнителями, легкий доступ к недавно воспроизведенным песням и интеграция с Apple Podcasts.
Приложение даже поставляется с опцией дистанционного управления, поэтому вы можете воспроизводить, приостанавливать или пропускать песню с любого другого устройства (Эй, Apple, пожалуйста, добавь это в Apple Music). Также есть поддержка Chromecast, встроенный общий доступ к Song. link и многое другое.
9to5Mac’s Take
Стоит отметить, что Cider все еще находится в стадии «альфа»-приложения, что означает, что оно находится в стадии разработки, поэтому вы, вероятно, найдете несколько ошибок здесь и там. Тем не менее, это интересное приложение для тех, кто недоволен iTunes или веб-приложением Apple Music в Windows. И поверьте мне, Apple давно пора заменить iTunes на Windows чем-то лучшим.
Вы можете скачать Cider на GitHub. Для пользователей Windows приложение доступно бесплатно в Магазине Microsoft (и вы можете заплатить небольшую дополнительную плату за поддержку разработчиков).
Читайте также:
- Лучшие приложения для iPhone, которые расширят ваши возможности использования Apple Music
FTC: Мы используем автоматические партнерские ссылки для получения дохода. Подробнее.
Вы читаете 9to5Mac — экспертов, которые день за днем сообщают новости об Apple и окружающей ее экосистеме. Обязательно заходите на нашу домашнюю страницу, чтобы быть в курсе всех последних новостей, и следите за новостями 9to5Mac в Twitter, Facebook и LinkedIn, чтобы оставаться в курсе событий.
Ваш комментарий будет первым