Странная ошибка с экспрессом и колыбелью - PullRequest
0 голосов
/ 23 октября 2011

Я не могу объяснить лучше, потому что, честно говоря, понятия не имею, почему существует эта ошибка.Во-первых, вот код, где я получаю сообщение об ошибке:

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 Ответ

1 голос
/ 23 октября 2011

Обратите внимание на вторую строку в стеке вызовов:

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 не определено.

Я надеюсь, что, по крайней мере, вы начали свои усилия по отладке.

...