我使用duwelryal使用其入门套件(http://durandaljs.com/get-started.html)
创建了一个新项目然后我使用bower(bower install materialze
)
添加materialize后需要durandal配置
requirejs.config({
paths: {
'text': '../lib/require/text',
'durandal':'../lib/durandal/js',
'plugins' : '../lib/durandal/js/plugins',
'transitions' : '../lib/durandal/js/transitions',
'knockout': '../lib/knockout/knockout-3.1.0',
'bootstrap': '../lib/bootstrap/js/bootstrap',
'jquery': '../lib/jquery/jquery-1.9.1',
'hammerjs': '../lib/hammer/hammer',
'jquery.hammer': '../bower_components/materialize/js/jquery.hammer',
'materialize': '../bower_components/materialize/dist/js/materialize'
},
shim: {
'bootstrap': {
deps: ['jquery'],
exports: 'jquery'
},
'materialize': {
deps: ['jquery', 'hammerjs']
},
'jquery.hammer': {
deps: ['jquery', 'hammerjs', 'waves']
}
}
});
我最终错了 -
未捕获的错误:Mismatched anonymous define() module: function ($, Hammer)
实际上,每次刷新时,我都会遇到不同的错误,这似乎指向了一些与需求混淆的东西。我的问题是 - 如果在添加实体化之前一切都运行良好,那么如何添加它会让事情变得如此脆弱?
我做错了吗?
答案 0 :(得分:1)
您的问题是1年零9个月前,现在Materialize不再将jQuery作为依赖项,我相信他们不再使用Hammer.js,或者他们将不再使用。仍然this is something everybody runs into与Materialize兼容,并且可以修复!
首先,如果您不习惯查看自己的node_modules内部模块,我鼓励您看一看,看看是否可以找到Hammer.min.js(我相信它会存在于捆绑包中2016)或Hammer.js,因为如果您开始着眼于他人的资源,您会更快地学习。之所以会出现这些问题,是因为您可以在全局或本地安装模块,并且必须管理所有版本,而且这种情况一直存在,但这是npm和节点程序包管理器的乐趣。
**
**
Bower is deprecated,但是如果您在2018年使用npm,此问题对您的影响也将类似,理论上它将帮助使用凉亭的人们。 您需要包括javascript依赖项(请注意,随着1.0.0版的发布,jQuery最近变得可选)
示例1
如果我在本地安装了npm模块并且正在进行电子应用,这就是我要做的事情:
您将在CSS上遇到同样的问题,因此在foo.html中需要:
<link href="./node_modules/materialize-css/dist/css/materialize.css" rel="stylesheet">
您想要的:
window.Hammer = require('./node_modules/materialize-css/js/hammer.min.js')
示例2:
我在全局安装模块,并想加入Materialize,也许我使用grunt或webpack,在这个人为的示例中,我使用jquery-2.1.4.min.js
在foo.js中
window.$ = window.jQuery = require('../assets/jquery/jquery-2.1.4.min.js');
window.Hammer = require('../assets/hammer/hammer.min.js');