ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and...

35
ArcGIS API for JavaScript Tips and Tricks for Debugging Apps Andy Gup

Transcript of ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and...

Page 1: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

ArcGIS API for JavaScriptTips and Tricks for Debugging AppsAndy Gup

Page 2: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

Page 3: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Debugging Patterns

Page 4: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Additional tools• Continuous Integration

– Automate tasks using node.js– Run linter, beautify, minify your code– And of course, test your code

• Esri TypeScript

Page 5: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Why TypeScript?Optional type system for JavaScript

let foo = 123;

let foo: number = ‘123’; // Error: cannot assign ‘string’ to number

Build-time type safety

Page 6: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

ES6Switch to using const and let

var m = map;

const m = map;

X

DEMO

Page 7: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Browser Developer Tools

Page 8: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

VMs for Debugging Edge/IE 8 - 11

https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Page 9: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Front-end

Page 10: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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 11: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Use a Web Server for testingUse HTTPSIIS, Apache or similar

Install a local SSL certificate

Most 3rd party JavaScript frameworks come with web servers: React, Angular, Vue, etc

Page 12: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

ReferenceError: require not defined

Life-cycle issues

DEMO

Page 14: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Device browser debuggingConnect laptop to device via USB

Chrome for AndroidSafari for iOS (works best on Mac)

Page 15: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Device browser debugging - Chrome

Page 16: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Device browser debugging - Safari

Page 17: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Clearing Cache“Sticky cache” means new changes don’t showKeyboard ShortcutsBrowser settingsURL caching

Page 18: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Clearing Cache - ChromeMac Shift+Command+Delete

Windows Ctrl+Shift+Delete

Page 19: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Clearing Cache - Chrome

Page 20: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

Page 21: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Back-end

Page 22: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Common server errors• HTTP & REST request errors• Slow and intermittent

internet• Authorization errors• Cross domain requests errors

Page 23: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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 24: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

Page 25: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

ArcGIS REST API DocumentationOperator descriptionsAttribute/Value pairsRequest/ResponseJSON output

REST API Web Site

Page 26: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

JavaScript?

REST API?

Page 28: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

– *** This approach is a BEST PRACTICE!– 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 29: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Localhost OAuth 400 error

Page 30: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Localhost OAuth 400 error

Page 31: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

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

application (public app, used on remote site)

• Test early in the app development process

Page 32: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Slow network troubleshooting• Minimize, concatenate your .js and .css• Enable webserver gzip or brotli compression

Page 33: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Internet Resources• Search Engine• GeoNet• GIS StackExchange• Slack Spatial community

Page 34: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords:

Questions:

Andy [email protected]@agupgithub.com/andygup

Page 35: ArcGIS API for JavaScriptTips and Tricks for Debugging Apps...ArcGIS API for JavaScriptTips and Tricks for Debugging Apps Author: Esri Subject: 2019 DevSummit DC -- Presentation Keywords: