利用node sdk上传,代码出现 TypeError: Bad argument错误

var qiniu = require('qiniu');
var path = require('path');

qiniu.conf.ACCESS_KEY = "...AK...";
qiniu.conf.SECRET_KEY = "...SK...";

var bucket = "test-bucket";  
var generatedToken = uptoken(bucket);
var localFile = path.join(__dirname, "test.txt");
var key =  new Date().getTime();
var extra = new qiniu.io.PutExtra();

qiniu.io.putFile(generatedToken, key, localFile, extra, function(err, ret) {
    if(!err) {
        console.log(err);
    } else {
        console.log(ret);
    }
});

function uptoken(bucketName) {
    var putPolicy = new qiniu.rs.PutPolicy(bucketName);

    return putPolicy.token();
}

报的错误:

buffer.js:194
      this.parent = new SlowBuffer(this.length);
                    ^
TypeError: Bad argument
    at new Buffer (buffer.js:194:21)
    at FormStream.field (E:\NodeJs\QiniuTest\node_modules\qiniu\node_modules\form
stream\lib\formstream.js:135:16)
    at getMultipart (E:\NodeJs\QiniuTest\node_modules\qiniu\qiniu\io.js:60:10)
    at put (E:\NodeJs\QiniuTest\node_modules\qiniu\qiniu\io.js:45:14)
    at E:\NodeJs\QiniuTest\node_modules\qiniu\qiniu\io.js:96:5
    at fs.js:271:14
    at Object.oncomplete (fs.js:107:15)

1 ak、sk、bucket、文件路径等均检查过是正确的;
2 一开始以为是文件太大的原因(一个用程序生成的10M大小的文件,内容为可显示的随机ascii字符),就创建了一个只有两句话的文本文档,结果还是给的上面这个提示。
3 经过检查,程序运行到qiniu.io.putFile那一步出错。
4 我发现把key改成其他其他形式(非时间戳的形式)就不会出现上面的错误。
5 然后问题来了,出现了新的错误:

error:
 { [RequestError: connect ECONNREFUSED]
   code: 'ECONNREFUSED',
   errno: 'ECONNREFUSED',
   syscall: 'connect',
   name: 'RequestError' 
}
阅读 3.4k
1 个回答

似乎是连接不正确,能麻烦提供下 sdk 版本和 测试代码么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题