kan*_*312 5 jquery systemjs jspm
我正在尝试使用jspm/SystemJS 导入jQuery插件(即https://github.com/Mottie/Keyboard).
首先,我只需输入以下命令即可安装模块:
jspm install github:mottie/keyboard
Run Code Online (Sandbox Code Playgroud)
我在导入jQuery之后添加了在我的代码中导入库的行:
import keyboard from 'mottie/keyboard';
Run Code Online (Sandbox Code Playgroud)
但是,在运行代码时,我遇到以下错误:
Uncaught TypeError: Multiple defines for anonymous module
Run Code Online (Sandbox Code Playgroud)
谷歌搜索错误没有给我一个解决方案,至少没有一个我能理解的...我不知道这里是否有一些jspm大师可以帮助我?:)
提前谢谢了...
guy*_*ord 10
如果查看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'}"
Run Code Online (Sandbox Code Playgroud)
即使这样,上面要求jQuery已经加载.为此,我们可以在jQuery上添加一个shim来强制执行依赖项.
带有垫片的标准jQuery插件覆盖如下:
override.json
{
"main": "js/jquery.keyboard.js",
"shim": {
"js/jquery.keyboard": {
"deps": ["jquery"]
}
},
"dependencies": {
"jquery": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以安装:
jspm install github:mottie/keyboard -o override.json
Run Code Online (Sandbox Code Playgroud)
如果运行完毕,请将覆盖发布到jspm注册表,然后其他用户也可以受益.
| 归档时间: |
|
| 查看次数: |
2428 次 |
| 最近记录: |