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不会以这种方式成为对象数组。(见常见问题解答。)

尝试:

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 回答