Mismatched anonymous define() module
Like AlienWebguy said, per the docs, require.js can blow up if
- You have an anonymous define ("modules that call define() with no string ID") in its own script tag (I assume actually they mean anywhere in global scope)
- You have modules that have conflicting names
- You use loader plugins or anonymous modules but don't use require.js's optimizer to bundle them
I had this problem while including bundles built with browserify alongside require.js modules. The solution was to either:
A. load the non-require.js standalone bundles in script tags before require.js is loaded, or
B. load them using require.js (instead of a script tag)
In getting started with require.js I ran into the issue and as a beginner the docs may as well been written in greek.
The issue I ran into was that most of the beginner examples use "anonymous defines" when you should be using a "string id".
anonymous defines
define(function() { return { helloWorld: function() { console.log('hello world!') } }; }) define(function() { return { helloWorld2: function() { console.log('hello world again!') } }; })
define with string id
define('moduleOne',function() { return { helloWorld: function() { console.log('hello world!') } };}) define('moduleTwo', function() { return { helloWorld2: function() { console.log('hello world again!') } };})
When you use define with a string id then you will avoid this error when you try to use the modules like so:
require([ "moduleOne", "moduleTwo" ], function(moduleOne, moduleTwo) { moduleOne.helloWorld(); moduleTwo.helloWorld2();});
I had this error because I included the requirejs file along with other librairies included directly in a script tag. Those librairies (like lodash) used a define function that was conflicting with require's define. The requirejs file was loading asynchronously so I suspect that the require's define was defined after the other libraries define, hence the conflict.
To get rid of the error, include all your other js files by using requirejs.