Recusou-se a executar o script, a verificação estrita do tipo MIME está ativada?

Respostas:

58

Você tem um <script>elemento que está tentando carregar algum JavaScript externo.

A URL que você forneceu aponta para um arquivo JSON e não um programa JavaScript.

O servidor está relatando corretamente que é JSON, então o navegador está abortando com essa mensagem de erro em vez de tentar executar o JSON como JavaScript (o que geraria um erro).


Provavelmente, a razão subjacente para isso é que você está tentando fazer uma solicitação Ajax, encontrou um erro de origem cruzada e tentou corrigi-lo informando ao jQuery que você está usando JSONP. Isso só funciona se o URL fornece JSONP (que é um subconjunto diferente de JavaScript), o que este não oferece.

No entanto, o mesmo URL com o parâmetro de string de consulta adicional callback=the_name_of_your_callback_functionretorna JavaScript.

Quentin
fonte
4
já dei isso e corrige o erro <script id = "data" type = "application / json"
rob.m
2
type="application/json"- Agora o navegador sabe que não está tentando carregar o JavaScript, então ignora o elemento de script inteiramente.
Quentin
58

No meu caso, foi um arquivo não encontrado, digitei incorretamente o caminho para o arquivo javascript.

Mruanova
fonte
8
O mesmo. O caminho incorreto resulta em alguma resposta de erro da página html, que por sua vez causa essa mensagem de erro confusa.
Gil Roitto
2
Resposta genial. Obrigado :)
Anjana Silva
21

Esse resultado é o primeiro que aparece no google, e é mais amplo do que o que está acontecendo aqui. O seguinte se aplica a um servidor expresso :

Eu estava tentando acessar recursos de uma pasta aninhada.

Dentro index.htmleu tinha

<script src="./script.js"></script>

A rota estática foi montada em:

app.use(express.static(__dirname));

Mas o script.jsestá localizado na pasta aninhada como em: js/myStaticApp/script.js recusou-se a executar o script, a verificação do tipo de meme está ativada. Acabei de alterar a rota estática para:

app.use(express.static(path.join(__dirname, "js")));

Agora funciona :)

AIon
fonte
6

Tente usar express.static () se estiver usando Node.js.

Você simplesmente precisa passar o nome do diretório em que mantém seus ativos estáticos para o middleware express.static para começar a servir os arquivos diretamente. Por exemplo, se você mantiver suas imagens, arquivos CSS e JavaScript em um diretório chamado public, você pode fazer o seguinte -

ou seja: app.use (express.static ('public'));

Essa abordagem resolveu meu problema.

Obrigado,

Nimesh
fonte
pode não ser a resposta correta para esta pergunta específica, mas foi a solução para o meu problema. Obrigado!
mcheah
2

Eu acidentalmente nomeei o arquivo js em .minvez de .min.js...

OZZIE
fonte
1

Frasco python

No Windows , ele usa dados do registro, portanto, se o valor "Tipo de conteúdo" em HKCR / .js não estiver definido para o tipo MIME adequado, isso pode causar o problema.

Abra o regedit e vá para HKEY_CLASSES_ROOT e certifique-se de que a chave .js / Tipo de conteúdo tem o valor text / javascript

C:\>reg query HKCR\.js /v "Content Type"

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript
Devandran
fonte
1

Depois de pesquisar um pouco, percebi que esse erro no meu Windows 10 64 bits estava relacionado ao JavaScript. Para ver isso, vá para o seu navegador DevTools e confirme primeiro. No meu caso, mostra um erro como "O tipo MIME ('aplicativo / javascript') não é executável".

Se for esse o caso, encontrei uma solução. Aqui está o acordo:

  1. Emprestando o usuário "ilango100" em https://github.com/jupyterlab/jupyterlab/issues/6098 :

Eu tive exatamente o mesmo problema um tempo atrás. Acho que esse problema é específico do Windows. É devido ao tipo incorreto de MIME ser definido no registro do Windows para arquivos javascript. Resolvi o problema editando o registro do Windows com o tipo de conteúdo correto:

regedit -> HKEY_LOCAL_MACHINE \ Software \ Classes -> Você verá muitas pastas para cada extensão de arquivo -> Basta rolar para baixo até o registro ".js" e selecioná-lo -> À direita, se o valor "Tipo de conteúdo" for diferente application / javascript, então isso está causando o problema. Clique com o botão direito em Content Type e altere o valor para application / javascript

insira a descrição da imagem aqui

Tente novamente no navegador. "

Depois disso, percebi que o erro muda. Ele nem abre mais automaticamente no navegador. PGAdmin, no entanto, será aberto na barra lateral (perto do calendário / relógio). Ao tentar abrir diretamente no navegador ("Nova janela PGAdmin 4 ..."), também não funciona.

SOLUÇÃO FINAL: clique em "Copiar URL do servidor" e cole no seu navegador. Funcionou para mim!

araujo.jpc
fonte
0

Adicione o snippet de código conforme mostrado abaixo ao html de entrada. ou seja, "index.html" em reactjs

<div id="wrapper"></div>
<base href="/" />

Oseni Adefemi
fonte
1
Eu gostaria muito de uma explicação sobre por que isso é útil.
Juan Lanus
-1

Se você tem uma rota no expresso, como:

app.get("*", (req, res) => {
  ...
});

Tente mudar para algo mais específico:

app.get("/", (req, res) => {
  ...
});

Por exemplo.

Ou então você pode acabar servindo recursivamente o mesmo template HTML continuamente ...

Ariel
fonte
-1

Eu tinha o mesmo problema que resolvi assim

change "text/javascript"

para

type="application/json"
MH Fuad
fonte
2
Isso impede o navegador de fazer a solicitação da URL em primeiro lugar e torna a scriptpresença do elemento no documento totalmente inútil.
Quentin
-1

No meu caso, eu tinha um link simbólico para o arquivo 404 e meu Tomcat não estava configurado para permitir links simbólicos.

Eu sei que não é provável que seja a causa para a maioria das pessoas, mas se você estiver desesperado, verifique esta possibilidade para o caso.

s1m3n
fonte
-2

Eu tive o mesmo problema e o problema era que estava faltando uma barra no meu caminho.

eu tinha

e para corrigi-lo, eu só precisei adicionar a barra entre jquery-ui e jquery-ui.min:

  <script type="text/javascript" src="js/jquery-ui/jquery-ui.min.js"></script>

espero que isso ajude: D

Tom Hoffmann V.
fonte
-12

Resolvi meu problema adicionando apenas $ {pageContext.request.contextPath} ao meu caminho jsp. ao invés de :

 <script    src="static/js/jquery-3.2.1.min.js"></script>

Eu coloco :

 <script    src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script>
Yassine Bsf
fonte