ArcGIS API for JavaScript -...

42

Transcript of ArcGIS API for JavaScript -...

Page 1: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS
Page 2: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

ArcGIS API for JavaScriptTips and Tricks for Debugging Apps

Andy Gup, Esri USCédric Despierre Corporon, Esri FR

Page 3: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Agenda• Error prevention “tools”• Front-end debugging• Back-end debugging• Internet Resources

Demo files on GitHub : https://github.com/andygup/devsummit-berlin-2015

Page 4: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Debugging Patterns

Page 5: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Tools

Page 6: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Choose your Editor• There is lots of them !• Use one with plugin support

– Productivity– Errors preventions

• In a team : use the same config– http://editorconfig.org/

Page 7: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Code quality tools• Use a linter

– JSHint– JSLint

• Available : – As a plugin in your IDE– Or inside continuous integration

https://github.com/Esri/jsapi-resources/tree/master/jshint

Page 8: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Additional tools• Continuous Integration

– Automate tasks using Grunt, Gulp, etc.– Run linter, beautify, minify your code– And of course, test your code

• Esri TypeScript

Page 9: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Browser Developer Tools

Page 10: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Front-end

Page 11: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Common front-end errors• Page failed to load or partial loaded• Items not displaying properly• Map is missing• Features are missing• Parsing errors• Life-cycle (order of code execution)

Page 12: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Use a Web Server for testingUse http:// or https://IIS, Apache or similar

Don’t use filesystem accessor: file://• Direct file access – bypass web server• Web security prevents AJAX direct requests

Page 13: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Map in pieces – missing esri.css

DEMO

Page 14: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Using file:/// for web development

DEMO

Page 15: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

ReferenceError: require not defined

Life-cycle issues

DEMO

Page 16: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Missing module and/or alias

TypeError: ___ is not a function

DEMO

Page 18: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

ReferenceError: ___ not defined

DEMO

Page 19: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Device browser debuggingConnect laptop to device via USB

Chrome for AndroidSafari for iOS (works best on Mac)

Page 20: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Device browser debugging - Chrome

Page 21: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Device browser debugging - Safari

Page 22: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Clearing Cache“Sticky cache” means new changes don’t showKey-board ShortcutsBrowser settingsURL caching

Page 23: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Clearing Cache - ChromeMac Shift+Command+Delete

Windows Ctrl+Shift+Delete

Page 24: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Clearing Cache - Chrome

Page 25: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Set code breakpoints• Manually via the browser• In-line via debugger statement• Make good use of console.log()

Page 26: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Back-end

Page 27: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Common back-end errors• HTTP & REST request errors• Slow and intermittent

internet• Authorization errors• Cross domain requests errors

Page 28: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Debugging ProxiesDetailed HTTP inspectionShow ALL HTTP/HTTPS traffic

• Fiddler• Charles

Page 29: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Developer Tools – Network TabHolds a lot of valuable information:• HTTP Request header fields

– Malformed request– 500 Server error

• HTTP Response header fields and data• Statistics (times and size of data payload)

Page 30: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Developer Tools – Network TabHTTP status codes• 200 – Okay• 302 – Redirect • 403 – Forbidden • 404 – Not Found• 500 – Internal Server Error

Page 31: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

ArcGIS REST API DocumentationOperator descriptionsAttribute/Value pairsRequest/ResponseJSON output

REST API Web Site

Page 32: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

REST request – example scenario200 – OkayBUT…my code is still failing?

JavaScript?

REST API?

Page 33: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Cross domain requests : CORS and proxy page• Cross-Origin Resource Sharing (CORS)

– Implemented on both server side and client side– http://enable-cors.org/

• Proxy page– Allow cross domain request– Manage security (tokens)– Go over the GET URL limit length– https://github.com/Esri/resource-proxy

Page 34: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Localhost OAuth 400 error

Page 35: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Localhost OAuth 400 error

Page 36: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Throttling – slow network testing• Most important for mobile• But important for every

application (public app, used on remote site)

• Test it early in the app development process

Page 37: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Slow network troubleshooting - 1• Try to request only what you need• Simplify geometries

– In your database– Or client side using the

maxAllowableOffset parameter

• If you need geometry operations, give the new GeometryEngine a try !

Page 38: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Slow network troubleshooting - 2• Minimize, concatenate your .js and

.css• Use ArcGIS JavaScript Optimizer• (or build your own !)• Enable webserver gzip compression

Page 39: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Internet Resources• Search Engine• GeoNet• GIS StackExchange

Page 41: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS

Please Take Our Survey!

Download the Esri Events app and find your event Select the session you

attendedSelect

“User Presentation Survey”or

“Technical Workshop Survey” Complete Answersand Select “Submit”

Page 42: ArcGIS API for JavaScript - Esriproceedings.esri.com/library/userconf/devsummit-euro15/papers/dev... · 2015 Developer Summit Europe--Presentation, 2015 Developer Summit Europe, ArcGIS