TypeError:在使用knox上传时,Object.keys在非对象上调用

我正在使用knox( https://github.com/LearnBoost/knox )将file upload到Amazon S3。 我刚将节点应用程序移至Amazon EC2,并在使用knox上传时出现以下错误。 我似乎已经安装了所有的库。 在nodejitsu上相同的代码是OK的。 我很新的节点/ JS,所以我不知道这是什么意思。

/home/ec2-user/foo/node_modules/knox/lib/auth.js:208 Object.keys(url.query).forEach(function (key) { ^ TypeError: Object.keys called on non-object at Function.keys (native) at Object.exports.canonicalizeResource (/home/ec2-user/foo/node_modules/knox/lib/auth.js:208:10) at Client.request (/home/ec2-user/foo/node_modules/knox/lib/client.js:275:22) at Client.put (/home/ec2-user/foo/node_modules/knox/lib/client.js:326:15) at Client.putStream (/home/ec2-user/foo/node_modules/knox/lib/client.js:408:18) at /home/ec2-user/foo/node_modules/knox/lib/client.js:378:20 at Object.oncomplete (fs.js:93:15) 

也许,你和我一样,在client.putFile()函数中传递“mimetype”string作为第三个参数。

您必须传递指定内容types标头的对象:

 client.putFile(localPath, s3Path, {'Content-Type': mimetype} ,function(err, result) {}); 

或者只是忽略第三个参数(就像我做的那样):

 client.putFile(localPath, s3Path, function(err, result) {});