{"id":17929673,"url":"https://github.com/abi/exceptional","last_synced_at":"2025-08-15T13:32:57.488Z","repository":{"id":1640165,"uuid":"2364911","full_name":"abi/exceptional","owner":"abi","description":"Better exceptions for better node.js debugging","archived":false,"fork":false,"pushed_at":"2011-09-19T03:01:09.000Z","size":107,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-03T20:55:46.862Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-09-11T10:19:02.000Z","updated_at":"2014-01-09T08:10:09.000Z","dependencies_parsed_at":"2022-07-12T14:55:59.489Z","dependency_job_id":null,"html_url":"https://github.com/abi/exceptional","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abi/exceptional","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abi%2Fexceptional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abi%2Fexceptional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abi%2Fexceptional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abi%2Fexceptional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abi","download_url":"https://codeload.github.com/abi/exceptional/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abi%2Fexceptional/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270578373,"owners_count":24610036,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-10-28T21:10:01.974Z","updated_at":"2025-08-15T13:32:57.229Z","avatar_url":"https://github.com/abi.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"exceptional\n===========\n\nFantastic error messages for Node. This module is still very experimental and you might experience great frustration if the exceptional error handler fails. You'll have to debug exceptional itself in that case...\n\nExample\n=======\n\nThe output is colored too. I'll embed an image here sometime but here's what it looks like uncolored:\n\n```\nReferenceError: nonexistentFunc is not defined\n/Users/abi/stuff/repos/node/exceptional/examples/example.js\n\t1: (function() {\n\t2:   var a;\n\t3:   require('../lib/exceptional');\n\t4:   a = 5;\n\t5:  \u003enonexistentFunc();\n\t6:   a();\n\t7: }).call(this);\n/Users/abi/stuff/repos/node/exceptional/examples/example.js\n\t2:   var a;\n\t3:   require('../lib/exceptional');\n\t4:   a = 5;\n\t5:   nonexistentFunc();\n\t6:   a();\n\t7: })\u003ecall(this);\nModule._compile (module.js:402:26)\nObject..js (module.js:408:10)\nModule.load (module.js:334:31)\nFunction._load (module.js:293:12)\nArray.\u003canonymous\u003e (module.js:421:10)\nEventEmitter._tickCallback (node.js:126:26)\n```\n\nUsage\n=====\n\n`npm install exceptional`\n\nAnd in your node module that you are debugging,\n\n`require 'exceptional'`\n\nNotes about Coffee use\n======================\n\nUsing this directly with the Coffee executable is a bad idea because this depends on the node process emitting the uncaughtException which happens to be handled by the Coffee executable directly. See this [Stack Overflow question](http://stackoverflow.com/questions/6346291/nodejs-and-coffeescript-coffee-executable-not-behaving-the-same/6350100#6350100) for details. You can of course do this instead,\n\n`coffee -c x.coffee \u0026\u0026 node x.js`\n\nThis is what I do currently.\n\nTODO\n====\n\n* Figure out a better color scheme\n* Write some tests\n* Relative paths\n* Handle other kinds of special errors like we're handling AssertionError right now\n* Figure out how muliple imports/requires will be handled\n* Make sure it works correctly with bugs in imported modules\n* Write a node/coffee runner wrapper that injects \"require 'exceptional'\" into modules so that I don't have to include\nexceptional as a dependency for every module","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabi%2Fexceptional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabi%2Fexceptional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabi%2Fexceptional/lists"}