qiniu / js-sdk

Qiniu Cloud JavaScript SDK
1.38k stars 519 forks source link

mOxie is not defined #266

Closed FrankFang closed 3 years ago

FrankFang commented 7 years ago

如果你的项目采用了 webpack,想要引入这个 sdk 基本都会遇到 mOxie is not defined 这个报错,这是因为这个 sdk 依赖了 window.moxie!

解决办法:

  Promise.all([
    import('moxie/bin/js/moxie'),
    import('plupload/js/plupload.dev'),
    import('qiniu-js')
  ]).then(([moxie, plupload]) => {
    window.moxie = moxie
    window.plupload = plupload

    var uploader = Qiniu.uploader({ ...
})

这样就可以了。

只需要根据环境做一下适配就好了啊,就像 plupload 这样做就行:

    if (typeof define === "function" && define.amd) {
        define("plupload", ['./moxie'], extract);
    } else if (typeof module === "object" && module.exports) {
        module.exports = extract(require('./moxie'));
    } else {
        global.plupload = extract(global.moxie);
    }

为什么一定要依赖全局变量啊!

GuGaobai1994 commented 7 years ago

感谢建议

chinahxf commented 6 years ago

你好,我是在vue ,里面应该怎么解决这个问题呢?window.moxie?

chinahxf commented 6 years ago

该问题已解决贴出来vue中的代码 window.moxie=require('plupload/js/moxie') window.plupload=require('plupload/js/plupload.dev')

fanxl12 commented 6 years ago

@chinahxf 我也碰到这个问题,在哪里引入?我这样引入使用也报错啊

mOxie.Image is not a constructor
fanxl12 commented 6 years ago

@chinahxf 我是在上传页面引入的

window.mOxie = require('../../../static/pupload/plupload-2.1.2/js/moxie')
playboygit commented 6 years ago

//这里使用相对路径,就是该文件相对于static目录的路径 window.mOxie = window.moxie = require('../../../static/js/plupload/moxie') require('../../../static/js/plupload/plupload.dev') require('../../../static/js/qiniu/qiniu')

然后结合我给出的js文件版本使用,就没有问题 vue.zip

forrest-mao commented 4 years ago

仅七牛内部员工可见:https://jira.qiniu.io/browse/TS-951

yinxulai commented 3 years ago

该问题已得到解决