0

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

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
4

1 に答える 1

2
  • home/作成user時にpathsは定義されていません。
  • 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
于 2011-02-02T02:43:20.720 に答える