快递和摇篮的奇怪错误

时间:2011-10-22 23:10:38

标签: node.js couchdb coffeescript cradle

我无法解释得更好,因为我真的不知道为什么会出现这种错误。首先,这是我得到错误的代码:

app.get '/image/:id', (req, res, next) ->
    images.get req.params.id, (err, doc) ->
        if err then next err else
            res.contentType doc._attachments.image.content_type
            img = images.getAttachment doc.id, 'image'
            img.on 'data', (chunk) ->
                res.write chunk, 'binary'
            img.on 'end', ->
                res.end()

我很确定问题必定存在于某个地方。我有/upload路线重定向到此路线,以立即显示上传的图像。

然后我收到了这个错误:

TypeError: Cannot call method 'replace' of undefined
    at Object.lookup (/home/scan/Javascript/acres/node_modules/express/node_modules/mime/mime.js:62:20)
    at ServerResponse.contentType (/home/scan/Javascript/acres/node_modules/express/lib/response.js:209:43)
    at Object.callback (/home/scan/Javascript/acres/app.coffee:105:13)
    at Object.get (/home/scan/Javascript/acres/node_modules/cradle/lib/cradle.js:316:33)
    at /home/scan/Javascript/acres/app.coffee:100:19
    at callbacks (/home/scan/Javascript/acres/node_modules/express/lib/router/index.js:272:11)
    at param (/home/scan/Javascript/acres/node_modules/express/lib/router/index.js:246:11)
    at param (/home/scan/Javascript/acres/node_modules/express/lib/router/index.js:243:11)
    at pass (/home/scan/Javascript/acres/node_modules/express/lib/router/index.js:253:5)
    at Router._dispatch (/home/scan/Javascript/acres/node_modules/express/lib/router/index.js:280:4)

当然我想查找究竟是什么价值给我带来麻烦,所以我在每个嵌套中用一些console.log更改了代码。 nodemon重新启动了该应用,对于此图片,它就像一个魅力。使用此代码。

所以我上传了另一个,完全相同的错误。代码更改,重启,适用于此图像。

那我哪里出错或者每次上传都要重启?

编辑:有关系统的一些信息:

connect-cradle@0.1.0
connect-form@0.2.1
cradle@0.5.7
express@2.4.6
node@0.4.12

1 个答案:

答案 0 :(得分:1)

注意调用堆栈中的第二行:

  

在ServerResponse.contentType(/home/scan/Javascript/acres/node_modules/express/lib/response.js:209:43)

因此,您的res.contentType来电时会发生错误,doc._attachments.image.content_type会将mime.lookup传递给.replacedoc._attachments.image.content_type会在其上调用{{1}}。简而言之,问题是{{1}}未定义。

我希望至少能帮助您开始调试工作。