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

Upload: others

Post on 11-Jul-2020

42 views

Category:

Documents


0 download

TRANSCRIPT

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: