Windows: Hosting the ArcGIS API for JavaScript library

Installing the ArcGIS API for JavaScript library on Windows

The instructions below assume that you are installing the ArcGIS API for JavaScript library in the following location https://www.example.com/arcgis_js_api/library/3.35/ (C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\) on Internet Information Services (IIS) for Windows® Server, where www.example.com is the combination of the fully qualified domain name and top level domain of your web site.

If you are using a non-Windows operating system, please see the instructions on deploying the library on Unix/Linux.

The ArcGIS API for JavaScript library can be copied in its entirety to your web server directory (C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\). Copy \arcgis_js_api\library\3.35\ and all its contents from the ArcGIS API for JavaScript download to your web server. In this example the files are copied to: C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\.

After copying the files to your web server, you will need to edit some files to specify the baseUrl (www.example.com/arcgis_js_api/library/3.35/) for the default Dojo configuration.

Requirements

The default hosting configuration for both the ArcGIS API for JavaScript library and documentation is HTTPS.

  • HTTPSrequires your web server to use a web server certificate.
  • Note that when loading CSS cross-domain, CORS is required on the server hosting the CSS (in this case as part of the ArcGIS API for JavaScript). Refer to enable-cors.org for more information about enabling CORS on your server.
  • IIS will need to have the following MIMEtypes registered.
extension    MIME/type Description
.ttf application/octet-stream    True Type Fonts
.wasm application/wasm WebAssembly
.woff application/font-woff Web Open Font Format
.woff2 application/font-woff2 Web Open Font Format 2.0

Modify the Build

The ArcGIS API for JavaScript library contains two builds -- a normal build and a compact build. The compact build removes the Dojo Dijit dependency and minimizes the non-essential ArcGIS API for JavaScript classes. Please see the documentation for more details.

Configuration options for normal build

  1. Open C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\3.35\init.js in a text editor and search for the text "https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo", and replace this text with "https://www.example.com/arcgis_js_api/library/3.35/3.35/dojo"
  2. Open C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\3.35\dojo\dojo.js in a text editor and search for the text "https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo", and replace this text with "https://www.example.com/arcgis_js_api/library/3.35/3.35/dojo"

Configuration options for compact build

  1. Open C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\3.35compact\init.js in a text editor and search for the text "https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo", and replace this text with "https://www.example.com/arcgis_js_api/library/3.35/3.35compact/dojo"
  2. Open C:\Inetpub\wwwroot\arcgis_js_api\library\3.35\3.35compact\dojo\dojo.js in a text editor and search for the text "https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo", and replace this text with "https://www.example.com/arcgis_js_api/library/3.35/3.35compact/dojo"

Test the Install

Now you should be able to access the ArcGIS API for JavaScript library from your web server using the following URL(s):

<script src="https://www.example.com/arcgis_js_api/library/3.35/3.35/init.js">
<script src="https://www.example.com/arcgis_js_api/library/3.35/3.35compact/init.js">

Test your install. You can use the following test code to validate your ArcGIS API for JavaScript library installation.

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Test Map</title>
    <link rel="stylesheet" href="https://www.example.com/arcgis_js_api/library/3.35/3.35/esri/css/esri.css" />
    <script src="https://www.example.com/arcgis_js_api/library/3.35/3.35/init.js"></script>
    <style>
      html,
      body,
      #map {
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
    <script>
      require([
          "esri/map",
          "esri/layers/ArcGISTiledMapServiceLayer"
      ],function(Map, ArcGISTiledMapServiceLayer) {
          var map = new Map("map");
          //If you do not have Internet access then you will need to point this url to your own locally accessible tiled service.
          var tiled = new ArcGISTiledMapServiceLayer("https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer");
          map.addLayer(tiled);
      });
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>

Change the ArcGIS Services Directory "View In JavaScript" URL

The Services Directory allows you to view Map and Image services using the JavaScript API. Set the following values in the rest-config.properties file to use the local install:

#JS API URLs
jsapi.arcgis=https://www.example.com/arcgis_js_api/library/3.35/3.35/
jsapi.arcgis.sdk=https://www.example.com/arcgis_js_sdk/sdk/
jsapi.arcgis.css=https://www.example.com/arcgis_js_api/library/3.35/3.35/dijit/themes/tundra/tundra.css

Finally make sure the import statement for the esri.css stylesheet is in the <ArcGIS Server Install Location>ArcGIS\Server\framework\runtime\tomcat\webapps\arcgis#rest\www\client\mapserver\mapserverJSAPI.jsp file.

<style>
@import "<%=jsapiArcgisCssUrl%>";
@import "<%=cpath%>/static/jsapi.css";
@import "<%=jsapiArcgisUrl%>/js/esri/css/esri.css";
</style>

View the Configuring the Rest API help topic for more details.

Using HTTP

Note: While not recommended, it is possible to host the ArcGIS API for JavaScript library using http. The dojo.js and init.js files would need modification to update https to http.
Before: baseUrl:"https://www.example.com/arcgis_js_api/library/3.35/3.35/dojo"
After: baseUrl:"http://www.example.com/arcgis_js_api/library/3.35/3.35/dojo"