Что, "posts.map is not a function"? Давайте взглянем, что такое posts:
const [posts, setPosts] = useState([]);
Изначально это массив. У массивов map есть. А раз воспользоваться map'ом всё-таки не удаётся, значит, где-то вместо массива в качестве значения posts устанавливается какой-то мусор. Смотрим, где вызывается setPosts:
setPosts(fetchReq);
Окей, а что такое fetchReq? Давайте узнаем:
const fetchReq = fetch(`${fetchURL}/posts`).then(res => res.json());
Надо же, это промис. Зачем вы промис кладёте туда, где нужен массив? У промисов метода map нет. Надо дождаться выполнения этого промиса и передавать в setPosts результат. Исправляем:
fetch(`${fetchURL}/posts`)
.then(r => r.json())
.then(setPosts);