Js não funciona ao executar NPM

121 views
Skip to first unread message

R MG

unread,
Dec 22, 2021, 8:59:17 PM12/22/21
to Laravel Brasil
Olá, tudo bem. Sou iniciante em Laravel estou em meu primeiro projeto.

Tenho na pasta resources/js um arquivo que está apontado no webpack.mix.js assim:
.js('resources/js/maskCadAddPhone.js', 'public/js')

Se eu colocar manualmente esse arquivo na pasta public/js o sistema funciona normalmente. Agora se eu gerar através do npm run dev não funcionada dá erros como:

Uncaught SyntaxError: Unexpected token '}'
Uncaught ReferenceError: maskZip is not defined at HTMLInputElement.onblu

entre outros. 

O arquivo é carregado e é possível ver o código fonte dele no navegador.

Se eu for no arquivo gerado na pasta publica e apagar a primeira e as duas ultima linhas, ai o javascript começa a funcionar essas linhas são geradas no processo RUN DEV não sou eu que as incluo. O conteudo delas é:

primeiro linha:
/******/ (() => { // webpackBootstrap

duas ultimas:
/******/ })()
;

Obs: Não utilizo o bootstrap no projeto. Estou utilizando o tailwindcss.

Outra parte que atrapalha o funcionamento é que em uma verificação que faço com a função typeof(id) o npm adiciona um underline ficando assim _typeof(id)

Também fiz o teste utilizando o NPM RUN PROD ai o arquivo é mais compactado e fica tudo em uma única linha. Então não consegui fazer funcionar de jeito nenhum.

Poderiam me dar uma ideia de como corrijo isso?

Fernando Friedrich

unread,
Dec 23, 2021, 6:38:06 AM12/23/21
to Laravel Brasil
Bom dia tudo bem?

Não conheço profundamente node/npm/webpack/mix, utilizo apenas para unificar e minificar arquivos JS.

Você está usando o comando mix.js(), se não me engano ele compila e encapsula os arquivos/modulos etc em um arquivo, então seu escopo será apenas dentro deste arquivo (por isso do " /******/ (() => { // webpackBootstrap ").
Se você quiser apenas copiar o conteúdo do arquivo e minificar/criar versão, aconselho usar mix.scripts(), é o que eu uso.

Quando você roda npm run dev ou npm run prod o arquivo é verificado, sendo assim seu arquivo está com algum erro de sintax.
O erro Uncaught SyntaxError: Unexpected token '}' pode ser um ponto e vírgula colocado em lugar errado, um fechamento de } antes do esperado etc...
Sendo assim o comando mix.js() não vai compilar esse arquivo. Quando você insere o arquivo diretamente em public, como ele não passou por um "validador" ou algo assim, pode ser que rode pois o erro pode estar no final do arquivo e todas as rotinas anteriores foram carregadas...



Sobre você

--
Sem mais, agradeço sua atenção e coloco-me à disposição para esclarecimentos adicionais.
Cordialmente,
Fernando Friedrich
(51) 98442-8866
Hadder Soft - http://www.hadder.com.br

R MG

unread,
Jan 26, 2022, 9:47:56 AM1/26/22
to Laravel Brasil
Bom dia.

Obrigado pela dica, vou verificar.

Reply all
Reply to author
Forward
0 new messages