RequireJS由Drupal引起的匿名定义错误不匹配?

时间:2013-09-04 16:50:50

标签: javascript drupal-7 requirejs requirejs-define

我的drupal网站上运行了几个月的require.js应用程序。据我所知,应用程序的代码没有任何变化,但昨天突然我开始收到以下错误:

Uncaught Error: Mismatched anonymous define() module:

有趣的是,即使我的main.js文件仅包含以下内容,我也会遇到同样的错误:

require.config({});
require([''], function() {
});

但是,当我将main.js完全清空时,我收到以下错误:

Uncaught Error: Script error for: piwik

Piwik是该文件负责人所包含的第一个js文件。

我检查了Require.js文档,发现这可能是由于在Require.js API之外加载require模块引起的。为了测试是否是这种情况,我在Drupal环境之外运行了我的应用程序 - 而不是在Drupal模板中加载我现在通过外部html文件加载它与Drupal模板文件具有相同的标记。在该设置中,我没有收到错误,应用程序按预期加载。

那么我的问题是,与Drupal核心javascript文件和require.js有任何已知的冲突吗?我能想象的唯一导致问题的是jquery(它包含在文档头中)检查是否定义是一个函数,是否将jquery定义为模块...但是在我包含jquery之前加载了jquery require.js脚本。

我在页面上没有任何其他包含“define”,“require”或“module”的脚本。

我正在使用最新版本的Require(2.1.8)和最新的Drupal版本(7.2.3)

1 个答案:

答案 0 :(得分:2)

好吧 - 我已经解决了上述问题。那种。

为了调试问题,我在require.config中使用了“enforceDefine:false”。我立刻得到一个错误,告诉我我所需的一个依赖项缺少一个define函数。我检查过,确实是这种情况(似乎是由新的git提交引起的)。我仍然得到不匹配错误,但至少应用程序加载。

进一步更新:

结束了由piwik使用'define'引起的。显然,这是在即将推出的Piwik版本中修复的。

相关问题