1

見つけた

exports.index = (req, res) ->
  res.render "index",
    title: "Hello"

にコンパイルします

exports.index = function(req, res) {
    return res.render("index", { title: "Hello" })
}

ExpressJS で動作するもの。ただし、次のように使用できると思いました。

exports = 
    index: (req, res) ->
        res.render "index",
            title: "Hello"

exports.xxxすべてのルートを入力する必要はありませんが、コンパイルすると

var exports;
exports = {
  index: function(req, res) {
    return res.render("index", {
      title: "Hello"
    });
  }
};

ExpressJS では動作しないようですが、なぜですか?

Error: In /labs/Projects/jiewmeng/routes/index.coffee, Parse error on line 1: Unexpected '{'
    at Object.parseError (/usr/lib/node_modules/coffee-script/lib/coffee-script/parser.js:477:11)
    at Object.parse (/usr/lib/node_modules/coffee-script/lib/coffee-script/parser.js:554:22)
    at /usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:43:20
    at Object..coffee (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:19:17)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (/labs/Projects/jiewmeng/server.coffee:6:12)
    at Object.<anonymous> (/labs/Projects/jiewmeng/server.coffee:74:4)
4

1 に答える 1

4

module.exports vs exports = foo vs exports.foo = bar を説明するこの回答を参照してください

つまり、名前付きのローカル変数exportsを新しいオブジェクトに割り当てた場合、「実際の」exportsオブジェクトにプロパティを割り当てることができないため、コードは期待どおりに機能しません。A) オブジェクトを割り当てるmodule.exportsか、B) 既存のexportsオブジェクトにプロパティを割り当てることができます。

CoffeeScript でうまく機能する 1 つのパターンは次のとおりです。

module.exports = {
  SomeClass
  someFunction
  someObject
}
于 2012-06-23T01:34:01.893 に答える