balderdashy/sails · error

Unsupported browser: Missing support for `Array.isArray`, `A

Error message

Unsupported browser: Missing support for `Array.isArray`, `Array.prototype.forEach`, `Array.prototype.map`, or `Object.keys`!  (Sails' built-in HTML-unescaping for exposed locals supports IE9 and up.)

What it means

Error "Unsupported browser: Missing support for `Array.isArray`, `Array.prototype.forEach`, `Array.prototype.map`, or `Object.keys`! (Sails' built-in HTML-unescaping for exposed locals supports IE9 and up.)" thrown in balderdashy/sails.

Source

Thrown at lib/hooks/views/unescape-html-entities-deep-lite.min.string.js:81

 *
 * @returns {JSONCompatible}
 *          The provided data, which has now been destructively HTML-unescaped.
 */
function unescapeHtmlEntitiesDeepLite(data){

  // Check availability of features.
  // (Default unescaping supports IE 9 and up.
  //  If you need <=IE 8, etc check out http://kangax.github.io/compat-table/es5/#es5shim.
  //  For complete flexibility, you can also implement your own unescaping code.
  //  To do that, pass in `dontUnescapeOnClient: false` when calling the
  //  `exposeLocalsToBrowser()` view partial.)
  if (
    typeof Array.isArray !== 'function' ||
    typeof Array.prototype.forEach !== 'function' ||
    typeof Array.prototype.map !== 'function' ||
    typeof Object.keys !== 'function'
  ) {
    throw new Error('Unsupported browser: Missing support for `Array.isArray`, `Array.prototype.forEach`, `Array.prototype.map`, or `Object.keys`!  (Sails\' built-in HTML-unescaping for exposed locals supports IE9 and up.)');
  }


  // Now rebuild the data recursively.
  //
  // > This is a self-invoking recursive function.
  // > The initial call (made below) sets `thisVal` to `data`.
  return (function _unescapeRecursive (thisVal) {

    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    // No need to worry about errors, regexps, dates, functions,
    // readable streams, buffers, constructors, Infinity, -Infinity,
    // or `-0` (negative zero).
    // ***(see note above about bidirectional-JSON-compatible-ness)***
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    // If this is `null`, then leave it as-is.
    if (thisVal === null) {

View on GitHub (pinned to 7b76422cc2)

When it happens

Trigger: Thrown at lib/hooks/views/unescape-html-entities-deep-lite.min.string.js:81 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of balderdashy/sails@7b76422cc2 (2026-09-01). Data as JSON: /api/errors/29c9bd1f12c0c89b. Report an issue: GitHub.