Устранение неполадок :: 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, чтобы оставаться в курсе событий.
Ваш комментарий будет первым