У меня что-то похожее было, видимо из-за сборки laravel-mix, функцию нужно было указывать примерно так:
window.btn = function (){}
Слушай, я как понял дело то в том, что js собирается в самом низу страницы и в момент загрузки дом, ее не существует, может быть?