const sections = document.querySelectorAll('section[id]') function scrollActive(){ const scrollY = window.pageYOffset sections.forEach(current =>{ const sectionHeight = current.offsetHeight, sectionTop = current.offsetTop - 58, sectionId = current.getAttribute('id') if(scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.add("active") }else{ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.remove("active") } }) } window.addEventListener('scroll', scrollActive)No se garantiza que document.querySelector devuelva un Element . Si no se encuentra ningún elemento coincidente, devolverá nulo. ( https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector ).
Entonces potencialmente estás diciendo: null.classList.remove(...)
Compruebe que tiene un elemento de querySelector antes de usarlo, por ejemplo:
const element = document.querySelector('.nav__menu a[href*=' + sectionId + ']') if (!element) return; // early return if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ element.classList.add("active") } else { element.classList.remove("active") }