2011-02-02 14 views
0

正規表現の一致に基づいて関数を呼び出すWebサーバーを作成しようとしています。以下は例です。しかし、私はマッチング関数を呼び出すのに問題があります。このコードは、オブジェクトメソッドが関数ではないというnode.jsのクラッシュを引き起こします。私は間違って何をしていますか?式に基づくWebサーバー

http = require "http" 

http.createServer((req, res) -> 
    res.writeHead 200, {"Content-Type": "text/plain"} 
    res.end handle req 
).listen 8080 

console.log "Server running at http://127.0.0.1:8080/" 

paths = [ 
    method: home, expression: "/" 
    method: user, expression: "/user" 
] 

home = (req) -> 
    return "This is the home" 

user = (req) -> 
    return "This is a user page" 

handle = (req) -> 
    for path in paths 
     if req.url.match path.expression 
      console.log path.expression 
      return path.method req 

答えて

2
  • home/userpathsの作成時に定義されていません。
  • pathsは、このようにオブジェクトの配列ではありません。 (FAQを参照してください。)

試してみてください。

http = require "http" 

http.createServer (req, res) -> 
    res.writeHead 200, "Content-Type": "text/plain" 
    res.end handle req 
.listen 8080 

console.log "Server running at http://127.0.0.1:8080/" 

home = (req) -> "This is the home" 
user = (req) -> "This is a user page" 

paths = [ 
    {} = method: home, expression: "/" 
    {} = method: user, expression: "/user" 
] 

handle = (req) -> 
    for path in paths 
     if req.url is path.expression 
      console.log path.expression 
      return path.method req