Я получаю эту ошибку , когда я просматриваю свой веб - приложение в первый раз ( как правило , в браузере с кэшем инвалидов).
Ошибка: несоответствующий анонимный модуль define (): function (require) {
HTML :
<html>
.
.
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script> var require = { urlArgs: "v=0.4.1.32" }; </script>
<script data-main="assets/js/main" src="assets/js/libs/require.js"></script>
<script src="assets/js/ace/ace.js?v=0.4.1.32"></script>
</body>
</html>
JS :
$(function () {
define(function (require) {
// do something
});
});
Кто-нибудь точно знает, что означает эта ошибка и почему она происходит?
исходный файл , краткое обсуждение этого на странице проблем github
javascript
jquery
requirejs
Адонис К. Какулидис
источник
источник
У меня была эта ошибка, потому что я включил файл requirejs вместе с другими библиотеками, включенными непосредственно в тег скрипта. Эти библиотеки (например, lodash) использовали функцию определения, которая противоречила определению требования. Файл requirejs загружался асинхронно, поэтому я подозреваю, что определение require было определено после определения других библиотек, отсюда и конфликт.
Чтобы избавиться от ошибки, подключите все остальные файлы js с помощью requirejs.
источник
Приступая к работе с reactjs, я столкнулся с проблемой, и, как новичок, документация могла быть написана на греческом языке.
Проблема, с которой я столкнулся, заключалась в том, что большинство примеров для начинающих используют «анонимные определения», когда вам следует использовать «строковый идентификатор».
анонимный определяет
определить со строковым идентификатором
Когда вы используете определение со строковым идентификатором, вы избежите этой ошибки, когда попытаетесь использовать такие модули:
источник
Согласно документам :
источник
Имейте в виду, что некоторые расширения браузера могут добавлять код на страницы. В моем случае у меня был плагин «Emmet in all textareas», который испортил мои requireJs. Убедитесь, что в ваш документ не добавлен дополнительный код, проверив его в браузере.
источник
Существующие ответы хорошо объясняют проблему, но если включение ваших файлов сценариев с использованием или до использования requireJS не является легким вариантом из-за устаревшего кода, слегка взломанный обходной путь - удалить require из области окна перед тегом сценария, а затем восстановить его после слов. В нашем проекте это скрыто за вызовом серверной функции, но на самом деле браузер видит следующее:
Не самый аккуратный, но, похоже, работает и сэкономил много рефрактора.
источник
script
элементами.(function(){ var define = undefined; // the UMD registration code won't find the global 'define' anymore! // generated content goes here })()
Или вы можете использовать этот подход.
<script data-main="js/app.js" src="js/require.js"></script>
Что он будет делать, он загрузит ваш скрипт после загрузки require.js .
источник