I am using 3.16 of the ArcGIS API, downloaded locally via the bower / grunt instructions located GitHub - Esri/jsapi-resources: A collection of useful resources for developers using the ArcGIS API ... . I have built my application in development using Knockout JS and it works like a charm. I load the Knockout library in the require section of my main javascript file:
require(["esri/map", "app/knockout-latest"], function (Map, ko) {.....
My index.html is has the dojoConfig specified as such:
script type="text/javascript">
var dojoConfig = {
baseUrl: '.',
deps: ["app/knockout-latest",'app/main', 'app/date'],
packages: [
'app',
'dijit',
'dojo',
'dojox',
'dstore',
'dgrid',
'xstyle',
'put-selector',
'esri',
'js',
'dojo-bootstrap',
'lib'
],
parseOnLoad: true
};
</script>
<!--Dojo loader -->
<script src="dojo/dojo.js"></script>
So my app works perfectly in development, but once I use grunt to build the application, it breaks. The build completes successfully (I use the default build.profile.js from the GitHub repo), but I get a multipleDefine error in dojo.js. I've tried everything.
If I don't include it as a dependency in my dojoConfig, I get I.observableArray is not a function in dojo.js, and then a multiple define error.
I don't know how to fix this, other than to remove it from the build process and AMD load process all together, load it with a separate script tag and don't use it in the require block in my main js file. Has anyone run into this issue before with the dojo build / loader and knockout?
Thanks!
I assume app/main has this in it
require(["esri/map", "app/knockout-latest"], function (Map, ko) {.....
If that's the case, try not adding it to the deps of the profile, since it's not really a dependency because the main file loads it.
deps is used to load files immediately after Dojo loads, it would typically only be a single file, like an app/main, but include files that may add globals as well.