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,675 thoughts on “Using RequireJS exports with CoffeeScript

  1. This is a very informative post about online casinos and betting platforms.
    I especially liked how it explains the importance of choosing a licensed site before signing up.

    Many players often ask where they can find reliable gaming platforms with fair odds and smooth payouts.
    From what I’ve seen, checking platforms like vn22vip helps users compare features, bonuses, and overall experience.

    Thanks for sharing these insights — they’re helpful for both beginners and experienced bettors.

  2. I’m impressed, I have to admit. Seldom do I come across a
    blog that’s both educative and entertaining, and let me tell
    you, you have hit the nail on the head. The issue is an issue that too few people are speaking intelligently about.
    I’m very happy that I came across this during my
    search for something concerning this.

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>