У вас возникла одна из проблем с автоматической вставкой точек с запятой, функция JavaScript, которая позволяет использовать точки с запятой как «необязательные».
В вашем случае, когда вы пропускаете точку с запятой после присвоения массива, литерал массива в следующей строке интерпретируется как ссылка на элемент в массиве, который, конечно, не определен. Вы можете прочитать свой код как:
router.post('/addRows', function (req, res) {
const saveData = [][1,2,3,4,5,6,7,8,9,10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Это может показаться неверным, но это так - второй литерал массива анализируется как поиск свойства, содержащий выражение с запятыми («группировка»). Оператор запятой возвращает свой последний операнд, поэтому вы можете упростить приведенное выше:
router.post('/addRows', function (req, res) {
const saveData = [][10].map((i) => {
console.log(i)
saveData.push(i)
if (saveData.length === 10) {
res.status(200).json({'data': saveData});
}
})
})
Когда вы добавляете точку с запятой, вы удаляете неоднозначность и заставляете второй литерал массива анализироваться как литерал массива, а не как средство доступа к свойству.