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.

18,316 thoughts on “Using RequireJS exports with CoffeeScript

  1. This is a very informative post, thank you for sharing it.

    I like how the content is explained in a clear and simple way, making it easy to understand without being overwhelming.
    It is always helpful to read articles that focus on useful information and present it in a structured manner.

    Looking forward to reading more posts like this in the future.

  2. Почему пользователи выбирают площадку KRAKEN?

    Маркетплейс KRAKEN заслужил доверие многочисленной аудитории благодаря сочетанию ключевых
    факторов. Во-первых, это широкий и разнообразный ассортимент, представленный сотнями продавцов.

    Во-вторых, интуитивно понятный интерфейс KRAKEN, который упрощает навигацию, поиск товаров
    и управление заказами даже для новых пользователей.
    В-третьих, продуманная система безопасных
    транзакций, включающая механизмы разрешения споров (диспутов) и возможность использования условного
    депонирования, что минимизирует риски для обеих сторон
    сделки. На KRAKEN функциональность сочетается с внимательным отношением
    к безопасности клиентов, что делает процесс покупок более предсказуемым, защищенным и,
    как следствие, популярным среди пользователей, ценящих анонимность и надежность.

  3. Почему пользователи выбирают площадку KRAKEN?

    Маркетплейс KRAKEN заслужил
    доверие многочисленной аудитории благодаря сочетанию
    ключевых факторов. Во-первых, это широкий и
    разнообразный ассортимент,
    представленный сотнями продавцов.

    Во-вторых, интуитивно понятный интерфейс KRAKEN, который
    упрощает навигацию, поиск
    товаров и управление заказами даже для новых пользователей.
    В-третьих, продуманная система безопасных транзакций, включающая механизмы
    разрешения споров (диспутов) и возможность использования условного депонирования, что минимизирует риски для обеих сторон сделки.
    На KRAKEN функциональность сочетается с внимательным
    отношением к безопасности клиентов, что делает процесс покупок более предсказуемым, защищенным
    и, как следствие, популярным среди пользователей, ценящих анонимность и надежность.

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>