SyntaxError: expressão esperada, obteve ‘<'

Eu tenho SyntaxError: expected expression, got '<' erro no console quando estou executando o seguinte código do nó

 var express = require('express'); var app = express(); app.all('*', function (req, res) { res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */ }) var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port }) 

Erro: insira a descrição da imagem aqui

Eu estou usando Angular Js e sua estrutura de pastas como abaixo

insira a descrição da imagem aqui

O que eu estou perdendo aqui?

Este código:

 app.all('*', function (req, res) { res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */ }) 

diz ao Express que, não importa o que o navegador solicite, seu servidor deve retornar index.html . Portanto, quando o navegador solicita arquivos JavaScript como jquery-xyzmain.js ou angular.min.js , seu servidor está retornando o conteúdo de index.html , que começa com , que causa o erro de JavaScript.

Seu código dentro do retorno de chamada deve estar olhando para a solicitação para determinar qual arquivo enviar novamente e / ou você deve estar usando um padrão de caminho diferente com app.all . Veja o guia de roteamento para detalhes.

Tente isso, geralmente funciona para mim:

 app.set('appPath', 'public'); app.use(express.static(__dirname +'/public')); app.route('/*') .get(function(req, res) { res.sendfile(app.get('appPath') + '/index.html'); }); 

Onde o diretório public contém meu index.html e faz referência a todos os meus arquivos angulares na pasta bower_components.

A parte express.static Acredito que serve os arquivos estáticos corretamente (arquivos .js e css como referenciado pelo seu index.html). A julgar pelo seu código, você provavelmente precisará usar esta linha:

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

como parece, todos os seus arquivos JS, index.html e seu arquivo de servidor JS estão no mesmo diretório.

Eu acho que @TJ Crowder estava tentando dizer que era usar app.route para enviar arquivos diferentes de index.html, já que usar index.html teria seu programa apenas procurando arquivos .html e causando o erro JS.

Espero que isso funcione!

A idéia principal é que, de alguma forma, o HTML foi retornado em vez do Javascript.

O motivo pode ser:

  • caminhos errados
  • ativos em si

Pode ser causado por pré-compilation de ativos errados. No meu caso, eu peguei esse erro por causa da codificação incorreta.

Quando abri meu aplicativo.js, vi o application error Encoding::UndefinedConversionError at /assets/application.js

Houve backtrace completo de erro formatado como HTML em vez de Javasript.

Certifique-se de que os resources foram pré-compilados com sucesso.

Eu tive o mesmo erro. E no meu caso

RAZÃO : Houve restrição para que os resources no servidor e servidor estava enviando página de login em vez de páginas de javascript.

SOLUÇÃO : dar access ao usuário para resources ou remover restrições.

Você também pode obter essa mensagem de erro quando colocar uma tag inline em seu html, mas criar o erro (comum para mim) que você esqueceu de adicionar a barra à tag do script de fechamento da seguinte forma:

  

O interpretador de JS tenta "executar" a tag, que se parece com uma expressão que começa com um sinal de menor que, daí o erro: SyntaxError: expected expression, got '<'

Eu tive esse mesmo erro quando migrei um site do WordPress para outro servidor. A URL no header dos meus scripts js ainda estava apontando para o servidor antigo e para o nome do domínio.

Depois que atualizei o nome do domínio, o erro desapareceu.

Eu tive um problema semelhante usando js Angular. Eu tive que rewrite tudo para index.html no meu .htaccess. A solução foi adicionar as barras de caminho corretas. Cada situação é única, mas espero que isso ajude alguém.

Esse problema ocorre quando você está incluindo o arquivo com caminho errado e o servidor dá algum erro 404 no arquivo de carregamento.

Eu resolvi esse problema com meu aplicativo ASPNET autenticado adicionando WebResource.axd como um local no web.config para que seja autorizado para usuários anônimos

        

Simplesmente adicione:

 app.use(express.static(__dirname +'/app')); 

onde '/app' é o diretório onde seu index.html reside ou seu Webapp.

Eu tenho esse tipo de pergunta no Django, e meu problema é esquecer de adicionar static à tag .

Tal como no meu modelo:

  

Eu deveria adicionar a static a isto assim:

  

Isso deve funcionar para você. Se você estiver usando o SPA.

 app.use('/', express.static(path.join(__dirname, 'your folder'))); // Send all other requests to the SPA app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'your folder/index.html')); }); 

Este erro acontece quando o seu navegador não pode carregar um arquivo .js, declarado no seu HTML.