?
Я сталкиваюсь с проблемой компиляции, которую мне удалось как-то обойти, но я бы хотел понять, откуда именно эта проблема.Вот проблема:
Я использую проектact-create-app для начальной загрузки проекта React, и я получаю следующую ошибку, во время компиляции, с реакцией-скриптами (v3.1.1) при запуске react-scripts start
:
Failed to compile.
./src/reducers/test.js
TypeError: Cannot read property 'name' of null
at Array.filter (<anonymous>)
Ошибка возникает в файле test.js:
const initialArray = ['value1'];
export default function(inputArray = initialArray) {
return [...inputArray, 'value2'];
};
После исследования я обнаружил эту, более или менее связанную проблему, https://github.com/standard-things/esm/issues/434, по умолчанию экспортирует анонимную функцию.Назвав мою функцию, решил проблему компиляции ?
const initialArray = ['value1'];
export default function myFunc(inputArray = initialArray) {
return [...inputArray, 'value2'];
};
(именованный экспорт вместо экспорта по умолчанию также решил проблему)
Но я часто экспортироваланонимные функции по умолчанию, и я никогда не сталкивался с ошибкой компиляции.И это то, что я сейчас делаю в других частях моего кода, не испытывая ошибки компиляции из react-scripts
.
Так что я также взглянул на массив ввода, используемый функцией.Если я удаляю оператор распространения, чтобы получить строку возврата, подобную этой: return ['value2'];
, она компилируется, но поведение функции изменяется.Поэтому я попытался изменить присвоение по умолчанию на inputArray
следующим образом, и оно тоже скомпилировалось:
const initialValue = 'value1';
export default function(inputArray = [initialValue]) {
return [...inputArray, 'value2'];
};
Но еще раз, я не понимаю, почему мое первоначальное решение не скомпилируется.Вы видите что-то, чего я все время скучал?
Спасибо вам, ребята, за уделенное время!?