Sono molto nuovo al nodo e heroku e sospetto che si tratti di una specie di semplice permesso problema ecc, ma non riesco a rintracciarlo.Heroku (Cedar) + Node + Express + Jade I file javascript lato client nella sottodirectory funzionano localmente con foreman + curl ma non quando vengono inviati a Heroku
Ho diversi file javascript puri in una sottodirectory di un livello al di sotto della directory principale in cui si trova il mio file web.js. Ho una linea nei miei web.js file per specificare la directory
app.use('/heatcanvas',express.static(__dirname+'/heatcanvas'));
Se corro la mia applicazione a livello locale con Heroku Foreman ho la risposta attesa js quando ho eseguito il seguente comando ricciolo
curl localhost:5000/heatcanvas/heatcanvas.js
Tuttavia quando spingo a Heroku e colpire il corresponsing URL dal vivo nel browser
www.example.com/heatcanvas/heatcanvas.js
ricevo il seguente:
Cannot GET /heatcanvas/heatcanvas.js
Se controllo Firebug e/oi log di Heroku, vedo che in realtà ottengo 404 errori per questi file, anche se il percorso deve corrispondere a ciò che viene fatto localmente. Vale anche la pena ricordare che il javascript di terze parti sta arrivando proprio bene, è solo quando l'attributo src del tag script indica al mio sito che c'è un problema. Cosa devo fare per avere i miei script disponibili?
Non ho mai esaminato le specifiche, ma so che in Rails su Heroku, si mettono/compili le risorse statiche in root/pubblico. Ad esempio, Rails compila '/ assets/base.sass' in'/public/stylesheets/base.css'. Quindi penso che Heroku esponga la directory 'public' come una directory accessibile statica. In genere non è possibile accedere a file arbitrari su server di produzione come si potrebbe essere abituati a nelle app PHP convenzionali. Dovresti specificare una route GET che in realtà serve a quel file heatcanvas.js - ma non vorresti farlo. Sono davvero arrugginito, ma forse cerco di utilizzare la directory 'public'. – danneu
Sul [Cedar stack] (https://devcenter.heroku.com/articles/cedar) le richieste vengono indirizzate al banco prova non disturbato. Quindi spetta all'app/framework servire asset statici. L'unica particolarità della directory 'public' è che l'app/framework Rails serve risorse da lì. Le app Node.js avranno una struttura diversa. –
Puoi includere l'output di 'heroku logs -t' durante una di queste richieste? –