jquery - jspm:导入 jQuery 插件时出错

标签 jquery jspm systemjs

我正在尝试使用 jspm/SystemJS 导入 jQuery 插件(即 https://github.com/Mottie/Keyboard )。

首先,我只需输入以下命令即可安装该模块:

jspm install github:mottie/keyboard

然后,在导入 jQuery 之后,我在代码中添加了导入库的行:

import keyboard from 'mottie/keyboard';

但是,在运行代码时,我遇到了以下错误:

Uncaught TypeError: Multiple defines for anonymous module

谷歌搜索错误并没有给我提供解决方案,至少没有一个我能理解的解决方案...... 不知道这里有没有jspm高手可以帮助我? :)

提前非常感谢...

最佳答案

如果您查看 jQuery.keyboard 的源代码,它会在代码中两次使用 UMD 模式:

一次在https://github.com/Mottie/Keyboard/blob/master/js/jquery.keyboard.js#L31 ,并一次访问 https://github.com/Mottie/Keyboard/blob/master/js/jquery.keyboard.js#L2165 .

SystemJS 正在检测该文件为 AMD,但它自己定义了两次而不是一次。

基本上,这不是一个有效的 AMD 模块,因此您需要告诉 SystemJS 将其视为全局模块。

这可以通过覆盖来完成:

jspm install github:mottie/keyboard -o "{format: 'global'}"

即使如此,上面的内容也要求 jQuery 已经加载。为此,我们可以在 jQuery 上添加一个填充程序来强制执行依赖关系。

使用垫片覆盖的标准 jQuery 插件如下所示:

覆盖.json

{
  "main": "js/jquery.keyboard.js",
  "shim": {
    "js/jquery.keyboard": {
      "deps": ["jquery"]
    }
  },
  "dependencies": {
    "jquery": "*"
  }
}

然后我们可以安装它:

jspm install github:mottie/keyboard -o override.json

请将您的覆盖发布到 jspm registry如果成功,其他用户也可以受益。

关于jquery - jspm:导入 jQuery 插件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148667/

相关文章:

typescript - 如何在 TS 2.0 之后正确获取 Aurelia 的 TypeScript 类型定义文件 (*.d.ts)。发布?

polymer - Web 组件、Polymer 和 SystemJS

node.js - Angular2 Visual Studio 2017 MVC : Uncaught TypeError: System. 配置不是一个函数

javascript - 在克隆每个元素后添加换行符

javascript - Highcharts Z-Index 实践不起作用

javascript - 具有展开和折叠功能的时间线的 jQuery

javascript - JSPM 服务器错误 : Change occurred to a file outside SystemJS loading

javascript - 无法让我的 jquery slider 与 Internet Explorer 一起工作

javascript - 如何使用 jspm 和 systemjs 加载 Emberjs 2.0

node.js - 如何正确使用System.import()?