0

Having trouble with Lambda function, Receive an error but I don't get same error if i run same code within an express app. I'm not

Data returned by caniuse.getLatestStableBrowsers();
[
  'and_chr 89',        'and_ff 86',
  'and_qq 10.4',       'and_uc 12.12',
  'android 89',        'baidu 7.12',
  'bb 10',             'chrome 89',
  'edge 89',           'firefox 87',
  'ie 11',             'ie_mob 11',
  'ios_saf 14.0-14.5', 'kaios 2.5',
  'op_mini all',       'op_mob 62',
  'opera 73',          'safari 14',
  'samsung 13.0'
]

Lamda Code that i'm having issue with

'use strict';
const caniuse = require('caniuse-api');
const request = require('request');

const browsers = caniuse.getLatestStableBrowsers();
const versions = browsers.reduce((memo, bro) => {
    const parts = bro.split(' ');
    memo[parts[0]] = parts[1];
    return memo;
    });
    console.log(versions);

Express Code that works just fine

'use strict'
const express = require('express');
const caniuse = require('caniuse-api');
const app = express();

app.use(express.json());

app.get('/', (req, res) => {
  const browsers = caniuse.getLatestStableBrowsers();
  const versions = browsers.reduce((memo, bro) => {
    const parts = bro.split(' ');

    memo[parts[0]] = parts[1];

    return memo;
  }, {});

  res.send({ versions });
});


  • 1
    The error causing code is not defining the default initial value for reduce. `Array.reduce(reducer_function, initial_value)` – Wazeed Apr 16 '21 at 04:49
  • hi, @Wazeed is right, you have an initial value for the express part (empty `{}`) you need to do the same in the lambda code. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – Fatah Apr 16 '21 at 06:40

1 Answers1

0

The initial value is missing for the array reducer method, whereas in express code initial value is defined.

'use strict';
const caniuse = require('caniuse-api');
const request = require('request');

const browsers = caniuse.getLatestStableBrowsers();
const versions = browsers.reduce((memo, bro) => {
    const [browser, version] = bro.split(' ');
    memo[browser] = version;
    return memo;
}, {});
console.log(versions);
Wazeed
  • 1,230
  • 1
  • 8
  • 9