OBS JS-SDK报TypeError: xxxx is not a function 的一种原因

举报
shan0304 发表于 2019/06/24 09:16:03 2019/06/24
【摘要】 在有客户使用华为云OBS JS-SDK做对象上传 操作时候,代码如下所示,引入进度条回调函数时候会报TypeError的错误。// 创建ObsClient实例var obsClient = new ObsClient({ access_key_id: '*** Provide your Access Key ***', secret_access_key: '***...

在有客户使用华为云OBS JS-SDK做对象上传 操作时候,代码如下所示,引入进度条回调函数时候会报TypeError的错误。

// 创建ObsClient实例var obsClient = new ObsClient({
    access_key_id: '*** Provide your Access Key ***',       
    secret_access_key: '*** Provide your Secret Key ***',       
    server : 'https://your-endpoint'});var callback = function(transferredAmount, totalAmount, totalSeconds){    // 获取上传平均速率(KB/S)
    console.log(transferredAmount * 1.0 / totalSeconds / 1024);    // 获取上传进度百分比
    console.log(transferredAmount * 100.0 / totalAmount);
};
obsClient.putObject({
       Bucket : 'bucketname',
       Key : 'objectname',
       SourceFile : document.getElementById('input-file').files[0],
       ProgressCallback: callback 
}, function (err, result) {


报错截图如下:

image.png

此类错误在没有加入进度条回调函数的情况下是没有的,加上就会出现。


这个时候就要注意,在js的开发中是引入来mockjs导致,在mockjs中会全局改写 XMLHttpRequest,导致原生的一些属性方法失效。具体mockjs 修改的代码地址如下:

https://github.com/nuysoft/Mock/blob/refactoring/src/mock.js

image.png


解决方法建议是不要使用mockjs;mockjs改写XMLHttpRequest,对于开发中其他模块进行http开发中使用一些增值特性或功能都会有意想不到的影响,因此建议不要在商用开发版本中使用此库,特别是和较多的第三方云服务有对接时候。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。