2015-02-19 11 views
6

Ich entwickelte meine Webapp mit Ember CLI 0.1.15, mit Emberjs. 1.8.1Ember CLI/Browser aktualisieren/Produktion/404

Ich habe die App mit folgendem Befehl erstellt: ember build --umwelt production, und dann habe ich einen WAR aus den Dateien erstellt, die im dist-Ordner meines Projekts erstellt wurden, und dann lasse ich den WAR auf meinem Tomcat fallen Webapps-Ordner.

Also, wenn ich die App öffnen: ... es ging gut, ich sah meine Login-Bildschirm, ich loggte mich in und navigieren Sie in meiner App alles gut. Ich könnte auch die Zurück/Vorwärts-Taste tun, und Ember behandelt den Übergang gut.

Aber als ich auf die Aktualisierungsschaltfläche in meinem Browser klickte - die Adressleiste des Browsers zeigte in diesem Moment http://mytomcat/myapp/inventory/ - bekam ich 404 Antwort vom Tomcat.

Dann habe ich herausgefunden, warum es passiert ist: die Schaltfläche Aktualisieren sendet eine Anfrage an den Tomcat für den Pfad/myapp/myinventory/... natürlich ist der Pfad/myinventory nicht auf dem Server vorhanden. Alle Routen, die wir im Browser sehen - mit Ausnahme der Basis-URL - werden auf der Client-Seite generiert.

Also meine Frage ist: Was ist der richtige Weg (in Ember), um mit dieser Situation umzugehen? Ich brauche den Refresh-Button, um einfach zu funktionieren. Gibt es eine Möglichkeit für Ember, das angeklickte Ereignis für die Aktualisierungsschaltfläche abzufangen?

Ich denke, dass dieses Problem damit zusammenhängt: https://github.com/stefanpenner/ember-app-kit/issues/486, aber es hat nicht die Antwort, die ich brauche.

Vielen Dank im Voraus, Raka

--- UPDATE ---

Wahrscheinlich relevant: http://eviltrout.com/2014/04/10/the-refresh-test.html

+0

Sehen Sie, wenn folgende Arbeiten für Sie http://stackoverflow.com/questions/26177910/ember-cli-on-apache-tomcat – Kalman

+0

Vielen Dank! Es klappt. Wie akzeptiere ich es als Antwort? Übrigens ... jetzt ein anderes Problem (separate), anscheinend, wenn Sie den Refresh-Button drücken, lädt der Browser die gesamte Website (mit allen Skripten) neu, alles zurückgesetzt, einschließlich der "loggedInUser", die ich in den Anwendungscontroller .... Ist es die Browser-Sache? Oder Glut-Ding? Wie man irgendjemanden von ihnen stoppt/beide, um einfach aufzuhören, das zu tun .... Oder ist das Auffrischen wirklich ein Verbrechen? –

Antwort

7
  1. Innerhalb config/environment.js Datei gibt es eine Eigenschaft locationType genannt. Setzen Sie den Wert auf hash

  2. Das manuelle Verschieben von Dateien aus Ihrem Ordner /dist ist zeitraubend und lästig. Stattdessen können Sie eine output-path-Eigenschaft in Ihrem .ember-cli mit dem Speicherort innerhalb von Webanwendungen angeben, in den Sie die Dateien verschieben möchten. Eine weitere Option ist es, diese Option angeben, die ember server oder ember build

+2

Heißt das, dass es nicht möglich ist, Ember-Apps in der Produktion zu haben, ohne diesen "lästigen" kleinen Hash an der Wurzel des Pfades? – cwarny

+1

Ich habe auch dasselbe Problem. '#' in der URL nach dem Ändern des Positionstyps in 'Hash'. Irgendeine Lösung dafür? –