如何使用node.js在Heroku上通过pass-thru上传到s3?

如何使用node.js在Heroku上通过pass-thru上传到s3?,node.js,heroku,amazon-s3,knox-amazon-s3-client,Node.js,Heroku,Amazon S3,Knox Amazon S3 Client,这是我目前的密码。我使用的是express和knox,我认为我没有做任何不寻常的事情,但是s3.putFile响应400状态码,但出现空错误,并且文件没有上传 var express = require('express'); var knox = require('knox'); var app = express(); app.use(express.bodyParser()); var s3 = knox.createClient({ key: process.env.AWS_

这是我目前的密码。我使用的是express和knox,我认为我没有做任何不寻常的事情,但是
s3.putFile
响应400状态码,但出现空错误,并且文件没有上传

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
    });
});

这段代码即使在联机编辑器/调试器中也能正常工作,只是在Heroku中不行。我猜这和“”有关,但这只是一个猜测。然而,我能够使用and在Clojure中获得s3直通上传,以便在Heroku上工作,因此在node中也必须能够做到。

我偶然发现了一个修复程序,当我将以下内容添加到
包.json
中时,它开始工作。否则,Heroku默认为0.4

"engines": {
  "node": "0.8.x"
}