带有requirejs的模块的加载超时

  发布于 2023-02-13 19:09

我正在使用requirejs来加载一些库和依赖项.

当我加载jQuery时,它的工作完美:

main.js

require.config({
  shim: {
    jquery: {
      exports: '$'
    }
  },
  paths: {
    jquery: 'vendor/jquery'
  }
});

require([
  'vendor/jquery',
  'app/init'
]);

应用程序/ init.js

define(
  ['jquery'],
  function ($) {
    $(document).ready(function () {
      console.log('domready');
    })
  }
)

但是当我尝试添加下划线时,在网络面板中文件正确加载但在控制台中我得到了一个

未捕获的错误:模块的加载超时:下划线

发生了什么?我还尝试了require.config中的waitSeconds:200选项,但没有成功.

在最终(损坏)代码下面作为参考:

main.js

require.config({
  shim: {
    jquery: {
      exports: '$'
    },
    underscore: {
      exports: '_'
    }
  },
  paths: {
    jquery: 'vendor/jquery',
    underscore: 'vendor/underscore',
  }
})

require([
  'vendor/jquery',
  'vendor/underscore',
  'app/init'
])

应用程序/ init.js

define(
  ['jquery', 'underscore'],
  function ($, _) {
    $(document).ready(function () {
      console.log('domready');
    })
  }
)

Louis.. 11

definerequire调用中,有时会将您的模块称为"vendor/",有时也称为"".这是错的.根据您显示的配置,您应该参考""所有模块requiredefine调用模块.所以总是将jQuery和Underscore称为"jquery""underscore",而不是"vendor/....当您使用完整路径引用它们时,可以绕过shim配置.

实际上,您可以将require通话更改为:

require(['app/init']);

你不需要在那里引用jQuery和Underscore.它们将在加载时app/init.js加载,因为define它们需要它们.

(此外,相对较新版本的jQuery不需要垫片,因为jQuery检测到它是由兼容AMD的加载器加载并调用define自身.这不是问题的根源,但很高兴知道.)

1 个回答
  • definerequire调用中,有时会将您的模块称为"vendor/<name of module>",有时也称为"<name of module>".这是错的.根据您显示的配置,您应该参考"<name of module>"所有模块requiredefine调用模块.所以总是将jQuery和Underscore称为"jquery""underscore",而不是"vendor/....当您使用完整路径引用它们时,可以绕过shim配置.

    实际上,您可以将require通话更改为:

    require(['app/init']);
    

    你不需要在那里引用jQuery和Underscore.它们将在加载时app/init.js加载,因为define它们需要它们.

    (此外,相对较新版本的jQuery不需要垫片,因为jQuery检测到它是由兼容AMD的加载器加载并调用define自身.这不是问题的根源,但很高兴知道.)

    2023-02-13 19:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有