Ich bin sehr neu zu Knoten und Heroku und ich vermute, das ist eine Art von einfachen Erlaubnis Problem usw., aber ich kann es anscheinend nicht aufspüren.Heroku (Cedar) + Knoten + Express + Jade Client-Seite Javascript-Dateien im Unterverzeichnis arbeiten lokal mit Vorarbeiter + Curl, aber nicht, wenn Heroku geschoben
Ich habe mehrere reine Javascript-Dateien in einem Unterverzeichnis eine Ebene unter meinem Stammverzeichnis, wo meine web.js-Datei sitzt. Ich habe eine Linie in meinem web.js dem Verzeichnis
app.use('/heatcanvas',express.static(__dirname+'/heatcanvas'));
angeben Datei Wenn ich meine Anwendung lokal mit Heroku Foreman laufen bekomme ich die erwartete js Antwort, wenn ich den folgenden curl Befehl ausführen
curl localhost:5000/heatcanvas/heatcanvas.js
jedoch, wenn ich zu Heroku schieben und drücken Sie die corresponsing Live-uRL im Browser
www.example.com/heatcanvas/heatcanvas.js
erhalte ich folgendes:
Wenn ich Firebug und/oder die Heroku-Protokolle überprüfe, sehe ich, dass ich tatsächlich 404 Fehler für diese Dateien bekomme, obwohl der Pfad mit dem übereinstimmt, was lokal gemacht wird. Es ist auch erwähnenswert, dass Javascript von Drittanbietern in Ordnung ist, nur wenn das src-Attribut des Skript-Tags auf meine Website zeigt, dass ein Problem vorliegt. Was muss ich tun, damit meine Skripts verfügbar sind?
Ich habe mich nie mit den Einzelheiten befasst, aber ich weiß, dass Sie in Rails auf Heroku Ihre statischen Assets in root/public stellen/kompilieren. Zum Beispiel kompiliert Rails '/ assets/base.sass' nach'/public/stylesheets/base.css'. Also denke ich, dass Heroku das "öffentliche" Verzeichnis als statisch zugängliches Verzeichnis darstellt. Sie können im Allgemeinen nicht auf beliebige Dateien auf Produktionsservern zugreifen, wie Sie es von herkömmlichen PHP-Apps gewohnt sind. Sie müssten eine GET-Route angeben, die diese heatcanvas.js-Datei tatsächlich bereitstellt - aber das möchten Sie nicht tun. Ich bin wirklich rostig, aber vielleicht versuche ich das "öffentliche" Verzeichnis zu benutzen. – danneu
Auf dem [Cedar-Stack] (https://devcenter.heroku.com/articles/cedar) werden Anforderungen an den Dyno ungestört weitergeleitet. Es liegt also an der App/dem Framework, statische Assets zu liefern. Das einzige besondere an dem 'public'-Verzeichnis ist, dass die Rails-App/das Framework Assets von dort bedient. Node.js Apps werden unterschiedliche Strukturen haben. –
Können Sie während einer dieser Anfragen die Ausgabe von 'heroku logs -t' mit angeben? –