{"id":13394593,"url":"https://github.com/yogthos/clojure-error-message-catalog","last_synced_at":"2025-04-05T18:06:48.017Z","repository":{"id":46047776,"uuid":"56885603","full_name":"yogthos/clojure-error-message-catalog","owner":"yogthos","description":"a catalog of common Clojure errors and their meaning","archived":false,"fork":false,"pushed_at":"2021-11-17T22:48:15.000Z","size":34,"stargazers_count":446,"open_issues_count":9,"forks_count":24,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-03-29T17:25:39.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yogthos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-22T21:13:43.000Z","updated_at":"2025-01-26T04:48:17.000Z","dependencies_parsed_at":"2022-08-30T21:20:33.982Z","dependency_job_id":null,"html_url":"https://github.com/yogthos/clojure-error-message-catalog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yogthos%2Fclojure-error-message-catalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yogthos%2Fclojure-error-message-catalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yogthos%2Fclojure-error-message-catalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yogthos%2Fclojure-error-message-catalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yogthos","download_url":"https://codeload.github.com/yogthos/clojure-error-message-catalog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378141,"owners_count":20929296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T17:01:24.868Z","updated_at":"2025-04-05T18:06:47.984Z","avatar_url":"https://github.com/yogthos.png","language":null,"funding_links":[],"categories":["Others","Guides"],"sub_categories":[],"readme":"# Clojure Error Message Catalog\n\na catalog of common Clojure errors and their meanings\n\n## What is it?\n\nWe are experimenting with starting a community driven catalog of common errors. The main categories will be [Clojure](clj/), [ClojureScript](cljs/) and [libraries](/lib).\n\nThe idea is that people can submit an issue with a particular error, or make a pull request with the error, description and hopefuly one or two solutions to resolve it.\n\nEventually, the plan would be to create a site where you could paste errors and search for them that way, but it would make sense to start with a GitHub repo to see if there's interest. Hopefully, this will also help identify the most common errors people have trouble with and make error reporting better in Clojure itself.\n\nThis project was inspired by the way [Elm does this](https://github.com/elm-lang/error-message-catalog), where they have a repo for this purpose, and then provide custom compiler errors for these cases.\n\n## We need your errors!\n\nThis catalog is community driven, hence _your_ contribution to this is _invaluable_.\n\nIt is very simple to contribute / share errors, exceptions, causes and possible solutions.\nThere are 3 main sections of the catalog:\n\n#### 1. Clojure errors\n\n* Live under [clj](clj/)\n* Here we collect all Clojure _core_ errors: i.e. errors that are raised from/by Clojure itself.\n\n#### 2. ClojureScript errors\n\n* Live under [cljs](cljs/)\n* Here we collect all ClojureScript _core_ errors: i.e. errors that are raised from/by ClojureScript itself.\n\n#### 3. Library errors\n\n* Live under [lib](lib/)\n* Here we collect all errors that are raised from/by any Clojure / ClojureScript _library_ (Ring, Compojure, your library, etc..)\n\n## How to submit a new error\n\nIn order to contribute, please check that the error is not already in the catalog.\nIf it is and you need to add / change anything, just send a pull request.\n\n### Error file name\n\nErrors are submitted as markdown files (i.e. `.md`). The file name would be very close to the exception.\n\nFor example, let's take an exception:\n\n```clojure\n#object[mount.core.DerefableState 0x52691944 {:status :failed, :val #error {\n:cause \"mount.core.DerefableState cannot be cast to clojure.lang.IFn\"\n```\n\nSo something like `derefablestate-cannot-be-cast-to-ifn.md` would be a great, descriptive file name for this error.\n\n### Error file format\n\nWould be really helpful to have the following in the error file:\n\n* Exception\n* Description of the exception\n* Common cause(s)\n* Solutions\n\nShare a file that describes these sections in a  [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) format:\n\n```\n## Title: Exception message\n### Description: general description of the exception\n### Cause 1: Cause title\n### Solution 1\n...\n### Cause n: cause n title\n### Solution n\n```\n\n#### Why the \"format\"?\n\nFollowing this format / guideline allows this error catalog to be processed into a format that can be also _readable by programs_ (i.e. not just us, humans). Which enables great things like [contextual search] (https://en.wikipedia.org/wiki/Contextual_searching), IDE/tooling integration for suggestions, etc.\n\nCheck out [this error file](lib/clj/java-lang-boolean-cannot-be-cast-to-clojure-lang-symbol.md) to visualize the required format.\n\n### Where to place the file?\n\nSince there are 3 main sections ([clj](clj/) / [cljs](cljs/) / [lib](/lib)) place it under the section that matches the nature of the error.\n\nFor example the error (`\"mount.core.DerefableState cannot be cast to clojure.lang.IFn\"`) would live under [lib/mount/](lib/mount/)\nsince it is caused by the `library` that is called `mount`.\n\nIn case the error is Clojure _core_ related, place is under [clj](clj/).\n\nClojureScript _core_ related errors would go under [cljs](cljs/).\n\n-\n\nSo the steps to contribute are:\n\n* [fork](https://help.github.com/articles/fork-a-repo/) this repo\n* Once the error file is ready to be contributed, just [send a pull request](https://help.github.com/articles/creating-a-pull-request/) to the repo.\n\nIn case you have any questions, suggestions, please let us know via [opening an issue](https://github.com/yogthos/clojure-error-message-catalog/issues) or\npinging us on [clojurian slack](http://clojurians.net/) (@yogthos, @tolitius).\n\n### Website\n\nThe very beginnings of a website where people can browse and search the error repo, and submit new errors, is [here](https://github.com/eggsyntax/clojure-error-website). Contributions to the website are also extremely welcome. It's currently planned to be a very simple static website.\n\n## License\n\nCopyright © 2016 Clojure Community\n\nDistributed under the Eclipse Public License either version 1.0 or (at your option) any later version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyogthos%2Fclojure-error-message-catalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyogthos%2Fclojure-error-message-catalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyogthos%2Fclojure-error-message-catalog/lists"}