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

  1. В этой статье мы обсудим процесс восстановления после зависимостей, акцентируя внимание на различных методах и подходах к реабилитации. Читатели узнают, как создать план выздоровления и использовать полезные ресурсы для достижения устойчивых изменений.
    Ознакомиться с отчётом – капельница от похмелья услуги

  2. I like the helpful info you provide for your articles.
    I will bookmark your blog and check once more here frequently.
    I am slightly certain I’ll learn many new stuff proper here!

    Best of luck for the next!

  3. Greetings from Los angeles! I’m bored to death at work so I decided to browse
    your site on my iphone during lunch break. I really like the information you provide here and can’t wait
    to take a look when I get home. I’m shocked at how quick your blog loaded
    on my mobile .. I’m not even using WIFI,
    just 3G .. Anyways, very good site!

    Feel free to visit my web-site :: best seo company in jalandhar

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>