2012-10-27 16 views
5

İşte şu anki kodum. Ekspres ve knox kullanıyorum ve sıradışı bir şey yaptığımı sanmıyorum, ancak s3.putFile 400 durum kodu yanıt veriyor ama null hatası ve dosya yüklenmiyor.node.js ile Heroku'da s3'e geçişler nasıl yapılır?

var express = require('express'); 
var knox = require('knox'); 

var app = express(); 
app.use(express.bodyParser()); 

var s3 = knox.createClient({ 
    key: process.env.AWS_ACCESS_KEY_ID, 
    secret: process.env.AWS_SECRET_ACCESS_KEY, 
    bucket: process.env.S3_BUCKET_NAME 
}); 

app.post('/upload', function(req, res, next) { 
    var photo = req.files.photo; 
    var s3Headers = { 
     'Content-Type': photo.type, 
     'x-amz-acl': 'public-read' 
    }; 

    s3.putFile(photo.path, photo.name, s3Headers, function(err, s3response){ 
     //handle, respond 
    }); 
}); 

Bu aynı kod adil değil Heroku dan, hatta cloud9 çevrimiçi editör/ayıklananları çalışıyor. Sanırım "ephemeral file system" ile ilgili bir şey var, ama bu sadece bir tahmin. Ancak, noir ve weavejester's aws sdk kullanarak Clojure Heroku üzerinde çalışmak için s3 pass-thru karşıya yükleme başardı, bu yüzden de düğümde mümkün olmalıdır.

cevap

2

Düzeltmeye rastladım: package.json'a ekledikten sonra çalışmaya başladı. Heroku varsayılan olarak 0.4'e ayarlıdır.

"engines": { 
    "node": "0.8.x" 
} 
İlgili konular