我无法更好地解释,因为老实说,我不知道为什么存在此错误。首先,这是我收到错误的代码:
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
请注意调用堆栈中的第二行:
at ServerResponse.contentType (/home/scan/Javascript/acres/node_modules/express/lib/response.js:209:43(
因此,错误发生在您的res.contentType
调用中,该调用doc._attachments.image.content_type
传递给mime.lookup
, 调用.replace
。简而言之,问题是doc._attachments.image.content_type
是未定义的。
我希望这至少能让你开始调试工作。