SyntaxError: expression attendue, obtenu '<'

J'ai obtenu SyntaxError: expected expression, got '<' erreur SyntaxError: expected expression, got '<' dans la console lorsque SyntaxError: expected expression, got '<' code de nœud suivant

 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 }) 

Erreur : Entrez la description de l'image ici

J'utilise les Js angulaires et c'est une structure de dossiers comme ci-dessous

Entrez la description de l'image ici

Qu'est-ce que je manque ici?

DdddddddélMMM HébergementTemetteMachinetteMachélMachéMachea

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

Indique à Express que peu importe ce que le navigateur demande, votre serveur doit renvoyer index.html . Donc, lorsque le navigateur demande des fichiers JavaScript comme jquery-xyzmain.js ou angular.min.js , votre serveur renvoie le contenu de index.html , qui commence par <!DOCTYPE html> , ce qui provoque l'erreur JavaScript.

Votre code dans le rappel doit examiner la demande pour déterminer le fichier à renvoyer, et / ou vous devriez utiliser un modèle de chemin différent avec app.all . Consultez le guide de routage pour plus de détails.

Essayez cela, fonctionne habituellement pour moi:

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

Lorsque le répertoire public contient mon index.html et fait référence à tous mes fichiers angulaires dans le dossier bower_components.

La partie express.static, je crois, sert correctement les fichiers statiques (fichiers .js et css comme référencé par votre index.html). À en juger par votre code, vous devrez probablement utiliser cette ligne à la place:

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

Car il semble que tous vos fichiers JS, index.html et votre fichier serveur JS se trouvent dans le même répertoire.

Je pense que ce que @TJ Crowder essayait de dire était d'utiliser app.route pour envoyer différents fichiers autres que index.html, car en utilisant simplement index.html, votre programme recherchera les fichiers .html et provoquera l'erreur JS.

J'espère que cela fonctionne!

J'ai eu la même erreur. Et dans mon cas

RAISON : Il y avait une restriction à ces ressources sur le serveur et le serveur envoyait une page de connexion au lieu des pages javascript.

SOLUTION : donner accès à l'utilisateur pour les ressources ou supprimer la restriction du tout.

L'idée principale est que le HTML a été retourné au lieu de Javascript.

La raison peut être:

  • Mauvais chemins
  • Les actifs eux-mêmes

Cela peut être dû à une précompilation incorrecte des actifs. Dans mon cas, j'ai saisi cette erreur en raison d'un mauvais encodage.

Quand j'ai ouvert mon application.js j'ai vu l' application error Encoding::UndefinedConversionError at /assets/application.js

Il y a eu une erreur complète d'erreur formatée en HTML au lieu de Javasript.

Assurez-vous que les actifs ont été précompilés avec succès.

Vous pouvez également obtenir ce message d'erreur lorsque vous placez une balise en ligne dans votre html mais faites la fausse crainte (commune pour moi) que vous oubliez d'ajouter la barre oblique à la balise de script de fermeture comme ceci:

 <script> alert("I ran!"); <script> <!-- OOPS opened script tag again instead of closing it --> 

L'interpréteur JS essaie de "exécuter" la balise, qui ressemble à une expression commençant par un signe inférieur à celui-ci, d'où l'erreur: SyntaxError: expected expression, got '<'

J'ai eu cette même erreur lorsque j'ai migré un site WordPress vers un autre serveur. L'URL de l'en-tête pour mes scripts js pointait toujours sur l'ancien serveur et le nom de domaine.

Une fois que j'ai mis à jour le nom de domaine, l'erreur est supprimée.

J'ai eu un problème similaire en utilisant les j. Angulaires. J'ai réécrit tout dans index.html dans mon .htaccess. La solution était d'ajouter les trajectoires du chemin d'accès correct. Chaque situation est unique, mais j'espère que cela aide quelqu'un.

Ce problème se produit lorsque vous incluez le fichier avec un mauvais chemin et que le serveur donne environ 404 erreurs dans le chargement du fichier.

J'ai résolu ce problème avec mon application ASPNET authentifiée en ajoutant WebResource.axd comme emplacement sur le web.config afin qu'il soit autorisé pour les utilisateurs anonymes

 <location path="WebResource.axd"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> 

Il suffit simplement d'ajouter:

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

'/app' est le répertoire où se trouve votre index.html ou votre Webapp.