Тоже долго искал решение. В итоге наткнулся на такой же вопрос на
StackOverflow, в котором пользователь с ником
"shanecp" отвечает, почему возникает проблема с jQuery в проектах где используется Laravel + Vite.
Если коротко, то это происходит из-за порядка загрузки модуля Vite.
Vite загружает скрипты в виде модулей.
А модули всегда выполняются в отложенном (deferred) режиме (
ссылка на доку learn.javascript.ru).
Таким образом, если ваш скрипт написанный на jQuery размещен после директивы Vite, то этот скрипт выполняется прежде, чем загрузится сам jQuery и это вызывает ошибку
$ is undefined
.
В общем там советовали переместить код jQuery в app.js файл, чтобы он оставался в своем собственном модуле.