Estoy intentando subir una imagen usando Node w/express y me aparece el siguiente error. He visto algunas preguntas sobre esto que apuntan a asincronizar las llamadas a DB como la causa del problema. Me gustaría utilizar bodyParser como en teoría, bodyParser debería pasarme para conectarme y luego formidable, así que preferiría soluciones que no deshabiliten bodyParser.La carga de imágenes falla w/nodejs express
En mi caso, no realizo llamadas a bases de datos, todo mi código se copia a continuación. Cualquier luz que alguien podría arrojar sobre esto sería muy apreciada.
500 Error: parser error, 40 of 44 bytes parsed at IncomingForm.write (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:145:17) at IncomingMessage. (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:95:12) at IncomingMessage.emit (events.js:64:17) at HTTPParser.onBody (http.js:121:23) at Socket.ondata (http.js:1026:22) at Socket._onReadable (net.js:683:27) at IOWatcher.onReadable [as callback] (net.js:177:10)
Aquí está mi archivo app.js (coffeescript):
express = require('express')
routes = require('./routes')
app = module.exports = express.createServer()
app.configure(() ->
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use(express.bodyParser({
uploadDir: '/tmp/upload'
}))
app.use(express.methodOverride())
app.use(express.cookieParser())
app.use(app.router)
app.use(express.static(__dirname + '/public'))
)
app.configure('development',() ->
app.use(express.logger())
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
)
app.configure('test',() ->
app.use(express.logger())
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
)
app.configure('production',() ->
app.use(express.logger())
app.use(express.errorHandler())
)
app.get('/images/new', (req, res) ->
console.log("getting image form")
res.render('forms/image_upload', {title: 'Images'})
)
app.post('/images', (req, res) ->
console.log("post run")
res.send('uploaded')
)
app.listen(3000,() ->
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env)
)
Aquí es mi forma parcial (jade):
form#new-images(action="/images", enctype="multipart/form-data", method="post")
input#image-url(placeholder="Enter image url", type="text")
input#image-files(type="file", multiple="multiple")
input#submit(type="submit", value="Upload")
Aquí es decir son mis paquetes (ls NGP)
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── [email protected]
Esto funcionó. Estaba teniendo exactamente el mismo problema. ¡Gracias! – user531065
Respuesta perfecta. –