wake-up-neo.com

SyntaxError: erwarteter Ausdruck, '<'

Ich habe SyntaxError: expected expression, got '<' Fehler in der Konsole erhalten, wenn ich folgenden Knotencode ausführte

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

Error : enter image description here

Ich verwende Angular Js und die Ordnerstruktur ist wie unten beschrieben 

enter image description here

Was fehlt mir hier? 

46
underscore

Dieser Code:

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

teilt Express mit, dass der Server unabhängig von den Anforderungen des Browsers index.html zurückgeben soll. Wenn der Browser also JavaScript-Dateien wie jquery-x.y.z.main.js oder angular.min.js anfordert, gibt Ihr Server den Inhalt von index.html zurück, der mit <!DOCTYPE html> beginnt, was den JavaScript-Fehler verursacht.

Ihr Code im Callback sollte die Anforderung prüfen, um herauszufinden, welche Datei zurückgeschickt werden soll, und/oder Sie sollten ein anderes Pfadmuster mit app.all verwenden. Weitere Informationen finden Sie im routing guide .

44
T.J. Crowder

Versuchen Sie das, normalerweise funktioniert es für mich:

app.set('appPath', 'public');
app.use(express.static(__dirname +'/public'));

app.route('/*')
  .get(function(req, res) {
    res.sendfile(app.get('appPath') + '/index.html');
  });

Das Verzeichnis public enthält meine index.html und verweist auf alle meine Winkeldateien im Ordner bower_components.

Der express.static-Abschnitt, von dem ich glaube, dass er die statischen Dateien korrekt bereitstellt (.js- und css-Dateien, wie von Ihrer index.html referenziert). Nach Ihrem Code zu urteilen, müssen Sie wahrscheinlich stattdessen diese Zeile verwenden:

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

wie es scheint, befinden sich alle JS-Dateien, index.html und Ihre JS-Serverdatei im selben Verzeichnis.

Ich denke was @ T.J. Crowder versuchte zu sagen, dass es mit app.route möglich war, andere Dateien als index.html zu senden, da bei der Verwendung von index.html das Programm nur nach .html-Dateien suchen und den JS-Fehler verursachen wird.

Hoffe das klappt!

10
devonj

Die Hauptidee ist, dass irgendwie HTML anstelle von Javascript zurückgegeben wurde.

Der Grund kann sein:

  • falsche Wege
  • vermögenswerte selbst

Dies kann durch falsche Vorkompilierung der Assets verursacht werden. In meinem Fall habe ich diesen Fehler aufgrund falscher Kodierung festgestellt.

Als ich meine application.js öffnete, sah ich application error Encoding::UndefinedConversionError at /assets/application.js

Es wurde eine vollständige Rückverfolgung der als HTML formatierten Fehler anstelle von Javasript durchgeführt.

Stellen Sie sicher, dass die Assets erfolgreich vorkompiliert wurden.

8
Nick Roz

Ich hatte den gleichen Fehler. Und in meinem Fall

REASON: Es gab Beschränkung auf diese Ressourcen auf Server und Server sendete Anmeldeseite anstelle von Javascript-Seiten. 

L&OUML;SUNG: Erlaube dem Benutzer den Zugriff auf Ressourcen oder entferne die Einschränkung. 

5
Erlan

Sie können diese Fehlermeldung auch erhalten, wenn Sie ein Inline-Tag in Ihre HTML-Datei einfügen, jedoch den (für mich üblichen) Tippfehler machen, den Sie vergessen, den Slash zum schließenden Skript-Tag hinzuzufügen:

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

Der JS-Interpreter versucht, das Tag "auszuführen", das wie ein Ausdruck aussieht, der mit einem Kleiner-als-Zeichen beginnt, daher der Fehler: SyntaxError: expected expression, got '<'

3
gigawatt

Ich habe dieses Problem mit meiner authentifizierten ASPNET-Anwendung gelöst, indem Sie WebResource.axd als Speicherort in der Datei web.config hinzugefügt haben, sodass es für anonyme Benutzer autorisiert ist 

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

Ich habe diese Typenfrage zu Django und mein Problem ist es, static zum <script>-Tag hinzuzufügen.

Wie in meiner Vorlage:

<script  type="text/javascript"  src="css/layer.js"></script>

Ich sollte die static so hinzufügen:

<script type="text/javascript" src="{% static 'css/layer.js' %}" ></script>
0
aircraft

Ich hatte den gleichen Fehler, als ich eine Wordpress-Site auf einen anderen Server migrierte ... Die URL im Header für meine Js-Skripts zeigte immer noch auf den alten Server- und Domänennamen. 

Sobald ich den Domainnamen aktualisiert habe, ist der Fehler verschwunden.

0
Birdie Golden

Vielleicht hilft das jemandem. Der Fehler, den ich bekam, war

SyntaxError: erwarteter Ausdruck, '<'

Was ich getan habe, klickte auf Quelltext in Chrome und dort fand ich diesen Fehler

Beachten: Undefinierte Variable: Zeichenfolge in D:\Projekte\Demo\ge.php Online 66

Das Problem war dieses Codefragment,

$string= ''; <---- this should be declared outside the loop

while($row = mysql_fetch_assoc($result))
    {
        $string .= '{ id:'.$row['menu_id'].', pId:'.$row['parent_id'].', name:"'.$row['menu_name'].'"},';
    }

was das Problem behoben hat.

0
Hammad Khan

Einfach hinzufügen:

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

dabei ist '/app' das Verzeichnis, in dem sich Ihre index.html oder Ihre Webapp befindet.

0

Ich hatte ein ähnliches Problem mit Angular Js. Ich hatte alles in index.html in meinem .htaccess ..__ umgeschrieben. Die Lösung bestand darin, die richtigen Pfad-Schrägstriche in ..__ einzufügen. Jede Situation ist einzigartig, aber ich hoffe, das hilft jemandem.

0
phil

Dieses Problem tritt auf, wenn Sie Dateien mit falschem Pfad und Server einschließen. 

0
Muhammad Khalid

Das sollte für Sie funktionieren. Wenn Sie SPA verwenden.

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'));
});
0
tigercosmos