Skip to content
An easier way to match javascript lines to corresponding coffee-script in stack-traces
CoffeeScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
img
lib
test
.gitignore
.npmignore
.travis.yml
README.md
package.json

README.md

Coffee-Trace

Build Status

Makes debugging coffee-script easier by displaying corresponding lines of code in the stack-trace with style

Coffee-Trace

About Coffee-Trace

Coffee-Trace makes debugging coffeescript code easier by attempting to point corresponding coffeescript code and line numbers and styling the stacktrace a little bit.

WARNING: This is obviously for suited development needs and by no means intended for production use. It is also, by far, my ugliest piece of code. You've been warned.

Install and Usage

Unleash your inner masochist and enjoy uncaughtException and stack-traces, just by installing with:

npm install coffee-trace

and then

# Require it at the very beginning of your code
require('coffee-trace')

Example

Running this..

require('coffee-trace')

test = ->
  people =
    john:
      first_name: 'john'
      last_name: 'doe'
    mary:
      first_name: 'mary'
      last_name: 'jane'

  console.log("Welcome", people[p].first_name, people[p].last_name, "!!!") for p in ['john', 'mary', 'josh']

process.nextTick test

will result in this: Coffee-Trace

Why?

If you love Coffee-Script and Node.js, you will probably also be frustrated by the challenges of quickly finding and debugging the coffee-script line corresponding to the one pointed out by the stack-trace.

I've been searching a cleaner solution myself, and have found some very useful links and discussions, but am yet unsatisfied. So, while SourceMaps implementation in Coffee-Script is a reality, this is the least I can do.

ToDo ( Utopic Future High Hopes)

  • Beautify and comment code
  • Async API for code sandboxing
  • Returning a decent stack trace object (with coffee file, line and all).
  • A more complete testing
Something went wrong with that request. Please try again.