文件上传不适用于 RequireJS

Fileupload is not working with RequireJS

本文关键字:适用于 RequireJS 不适用 文件      更新时间:2023-09-26

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

TypeError: this._on is not a function

我想这是因为文件上传也需要加载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, layout, menu, modal, table, form, fileupload) {
$(document).ready(function () {...

您的配置存在多个问题:

  1. jQuery不需要填充程序,在不需要填充程序的地方使用填充程序可能会导致麻烦。

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

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