Using RequireJS exports with CoffeeScript

If you are using the “exports” object in your RequireJS module definition and happen to also be using CoffeeScript then be careful to either return the exports object at the end of the function or explicitly return nothing from the function by typing “return” on the last line. Like so:

define((require, exports, module) ->
    exports.foo = 'bar'
    return
)

If you don’t return nothing or the exports object CoffeeScript will compile this:

define((require, exports, module) ->
    exports.foo = 'bar'
)

…to the following javascript:

define(function(require, exports, module) {
    return exports.foo = 'bar';
});

Where the return value will be the string ‘bar’. This is no good because if you return a value from your module definition function, RequireJs uses it instead of the exports object. So when you come to require your module, you’ll be passed a String, rather than an object with a “foo” property as you’d expect.

17,665 thoughts on “Using RequireJS exports with CoffeeScript

  1. magnificent submit, very informative. I ponder why the other experts of this sector don’t notice this.
    You must continue your writing. I’m sure, you’ve a great readers’ base already!

  2. They deal in car accident legal representatives of perpetuity.

    my web site: personal injury lawyer near me (Dian)

  3. Somebody essentially lend a hand to make significantly posts I’d state.
    This is the very first time I frequented your website page
    and thus far? I amazed with the research you made to create
    this particular publish incredible. Fantastic job!

    Have a look at my web-site: best SEO services

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>