RequireJS Несоответствующая анонимная ошибка определения, вызванная Drupal?

У меня уже несколько месяцев работает приложение require.js на моем сайте drupal. Насколько мне известно, ничего не изменилось в коде приложения, но вдруг вчера я начал получать следующую ошибку:

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 вне API Require.js. Чтобы проверить, так ли это, я запустил свое приложение вне среды Drupal - вместо загрузки в шаблон Drupal, я сейчас загружаю его через внешний html-файл с той же разметкой, что и файл шаблона Drupal. В этой настройке я не получаю сообщение об ошибке, и приложение загружается, как ожидалось.

Поэтому мой вопрос: есть ли какие-либо известные конфликты с основными файлами javascript Drupal и require.js? Единственное, что я могу себе представить, вызывая проблему, это то, что jquery (который включен в заголовок документа) выполняет проверку, чтобы определить, является ли define функцией, и определяет ли она jquery как модуль... но jquery загружается до того, как я включаю скрипт require.js

У меня нет других скриптов, содержащих "define", "require" или "module" на странице.

Я использую самую последнюю версию Require (2.1.8) и последнюю версию Drupal (7.2.3)

1 ответ

Хорошо - я решил вышеупомянутую проблему. Вид.

Чтобы устранить проблему, я использовал "forceceDefine: false" в моем require.config. Сразу же я получил сообщение о том, что в одной из моих необходимых зависимостей отсутствует определенная функция. Я проверил, и это действительно так (похоже, это было вызвано новым коммитом git). Я все еще получаю ошибку несоответствия, но по крайней мере приложение загружается.

ДОПОЛНИТЕЛЬНОЕ ОБНОВЛЕНИЕ:

Закончилось тем, что был вызван использованием Piwik'define'. По-видимому, это исправлено в следующей версии Piwik.

Другие вопросы по тегам