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

举报
shan0304 发表于 2019/06/24 09:16:03 2019/06/24
6.6k+ 0 0
【摘要】 在有客户使用华为云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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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