【问题标题】:Fileupload is not working with RequireJS文件上传不适用于 RequireJS
【发布时间】:2023-12-28 02:53:01
【问题描述】:

我在使用 requirejs 时加载文件上传时遇到问题。它给我的错误是:

TypeError: this._on is not a function

我猜这是因为 fileupload 也需要加载 jquery.ui.widget。 所以我尝试导入库,但我似乎无法做到这一点。谁能帮我如何正确加载它?

这是代码:

    require.config({
paths: {
    'jQuery': 'lib/jquery-1.10.2.min',
    'jQuery-ui': 'lib/jquery-ui-1.10.3', 
    'jQuery-ui-widget' : 'jquery.ui.widget',
    'bootstrap': 'lib/bootstrap.min',
    'jquery-iframe': 'jquery.iframe-transport',
    'fileupload': 'jquery.fileupload',
},
shim: {
    'jQuery': {
        exports: '$'
    },
    'jQuery-ui': {
        deps: ['jQuery'],
        exports: '$'
    },
    'jQuery-ui-widget': {
        deps: ['jQuery', 'jQuery-ui-widget']
    },
    'bootstrap': {
        deps: ['jQuery', 'jQuery-ui']
    },
    'fileupload': {
        deps: ['jQuery', 'jQuery-ui', 'jquery-iframe']
    }
},
// only for development purporses:
urlArgs: "bust=" + (new Date()).getTime()

}); require(['jQuery', 'jQuery-ui', 'bootstrap', 'layout', 'menu', 'modal', 'table', 'form', 'fileupload'], function ($, jqueryUi, _bootstrap,布局、菜单、模式、表格、表单、文件上传){

$(document).ready(function () {...

【问题讨论】:

    标签: javascript jquery asp.net file-upload requirejs


    【解决方案1】:

    您的配置存在多个问题:

    1. jQuery 不需要 shim,在不需要 shim 的地方使用 shim 会导致麻烦。

    2. jQuery 将其模块名称硬编码为jquery(全部小写),因此您不能在名称jQuery 下引用它。好吧,您可以使用map 配置将jQuery 映射到jquery,但目前您的配置中没有这样的map。我建议全面使用jquery,这是我看到的几乎每个使用 RequireJS 和 jQuery 的项目的当前做法。

    我还建议在您的配置中使用enforceDefine: true,以便 RequireJS 更好地诊断模块加载失败。

    【讨论】: