مشکل از این سطر است:
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
که با نبود افزونه‌ی redux dev tools به یک مقدار falsy ترجمه می‌شود و متد compose فقط قرار است یکسری متد را دریافت کند. یک روش حل آن به صورت زیر است:
const devTools = process.env.NODE_ENV === 'development' ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__() : null

const store = createStore(
  rootReducer,
  compose(applyMiddleware(thunk), devTools)
)

یک روش دیگر آن استفاد از composeWithDevTools بجای متد compose است:
import {composeWithDevTools} from 'redux-devtools-extension/developmentOnly';
که از این بسته تامین می‌شود:
npm install --save-dev redux-devtools-extension
در این حالت دیگر نیازی به ذکر devtools و یا متدهای window ذکر شده نیست:
const store = createStore(
  rootReducer,
  composeWithDevTools(applyMiddleware(thunk))
)
‫۴ سال و ۶ ماه قبل، چهارشنبه ۷ اسفند ۱۳۹۸، ساعت ۰۱:۳۹
خطای 500، یعنی internal server error، یعنی بروز استثنایی در کدهای شما (و این مورد نیاز به بررسی دقیقی دارد). در مطلب «بررسی خطاهای ممکن در حین راه اندازی اولیه برنامه‌های ASP.NET Core در IIS» دو روش لاگ کردن آن‌ها ذکر شده‌اند. همچنین روش‌های دیگری هم برای لاگ کردن خطاها توسط «فریم ورک Logging» وجود دارد. به علاوه گاهی از اوقات بررسی محتوای response بازگشتی از سرور هم مفید است؛ یک نمونه. نکته‌ی «شبیه سازی customErrors در نگارش‌های دیگر ASP.NET» هم مفید است.
- در کل زمانیکه خطای 500 internal server error را دریافت می‌کنید، اگر برنامه را در حالت dotnet run اجرا کرده باشید، تمام خطاهای مرتبط، در پنجره‌ی کنسولی که باز است، لاگ می‌شوند. اگر از ویژوال استودیو استفاده می‌کنید، همین خروجی، در پنجره‌ی دیباگ آن هم درج می‌شود. مرور این خطاهای سمت سرور، برای رفع مشکل الزامی است. همچنین احتمال دارد خروجی خطاهای سمت سرور، در قسمت مشاهده‌ی محتوای response، در برگه‌ی ابزارهای توسعه دهندگان مرورگر هم ظاهر شود. آن‌را هم بررسی کنید. 
‫۴ سال و ۶ ماه قبل، یکشنبه ۴ اسفند ۱۳۹۸، ساعت ۲۳:۴۵
یک نکته‌ی تکمیلی: روش سفارشی سازی خروجی نهایی تاریخ

همانطور که در متن نیز عنوان شد، خروجی تبدیل زیر
const date = new Date(Date.UTC(2020, 1, 20, 3, 0, 0, 200));
const faDate = new Intl.DateTimeFormat("fa", {
   weekday: "long",
   year: "numeric",
   month: "long",
   day: "numeric"
}).format(date);
console.log(faDate);
معادل «۱۳۹۸ اسفند ۱, پنجشنبه» است که ... آنچنان مطلوب نیست. در یک چنین حالتی برای دسترسی به اجزای خروجی این فرمت کننده‌، می‌توان از متد استاندارد formatToParts استفاده کرد:
const date = new Date(Date.UTC(2020, 1, 20, 3, 0, 0, 200));
const faDateParts = new Intl.DateTimeFormat("fa", {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric"
}).formatToParts(date);
console.log(faDateParts);
که این خروجی را باز می‌گرداند:
[​
  { type: "year", value: "۱۳۹۸" },
 ​ { type: "literal", value: " " },
 ​ { type: "month", value: "اسفند" },
 ​ { type: "literal", value: " " },
 ​ { type: "day", value: "۱" },
 ​ { type: "literal", value: ", " },
 ​ { type: "weekday", value: "پنجشنبه" }​
]
که آرایه‌ای است از اشیاء type و value. اکنون با استفاده از قطعه کد زیر، این آرایه را تبدیل به یک شیء می‌کنیم که نام هر خاصیت آن، یک type است و مقدار آن value شیء متناظر:
const { year, literal, month, day, weekday } = Object.fromEntries(
  new Intl.DateTimeFormat("fa", {
    weekday: "long",
    year: "numeric",
    month: "long",
    day: "numeric"
  })
    .formatToParts(date)
    .map(item => [item.type, item.value])
);
سپس با استفاده از Objects Destructuring این شیء را به چند متغیر نسبت داده‌ایم. اکنون با دسترسی به مقادیر سال و ماه و غیره، هر طور که نیاز بود می‌توان آن‌ها را فرمت کرد. برای مثال:
const faDate = `${weekday}${literal}${day} ${month} ${year}`;
console.log(faDate);
با این خروجی:
«پنجشنبه, ۱ اسفند ۱۳۹۸»