node.js - extension - procfile heroku node js
Implementar Nodejs en Heroku no sirve los archivos estáticos ubicados en las subcarpetas (5)
Estoy implementando una aplicación NodeJs usando Heroku. Todo funciona bien excepto un pequeño problema que sirve archivos estáticos.
Tengo la siguiente configuración
app.use(express.static(__dirname + ''/htdocs''));
Funciona bien, excepto cuando intento servir archivos estáticos ubicados en subcarpetas.
www.example.com/bar.js // esto sirve al archivo /htdocs/bar.js
www.example.com/foo/bar.js // esto no puede encontrar el archivo /htdocs/foo/bar.js
Olvidé decir que en mi entorno local todo funciona bien, podría ser algo con heroku pero no puedo encontrar el motivo. ¿Alguien tuvo este problema antes? Soluciones?
¡Gracias!
Aparentemente, como explicamos en esta pregunta: Heroku (Cedar) + Node + Express + Jade Los archivos javascript del lado del cliente en el subdirectorio funcionan localmente con el capataz + curl pero no cuando se los envía a Heroku , no puedes usar __dirname con Heroku.
La alternativa parece ser:
// En la parte superior de su web.js
process.env.PWD = process.cwd ()// Entonces
app.use (express.static (process.env.PWD + ''/ htdocs''));
En mi caso, tuve un paso en mi compilación que en realidad borraba la carpeta /public
y luego volvía a agregar en un bundle.js y bundle.css.
Así que en mi local no lo vi, pero cuando se desplegó en Heroku los recursos faltaban.
Finalmente encontré la solución.
Lo resolví simplemente añadiendo la versión npm en mi paquete.json.
{
"name": "bla",
"version": "0.0.1",
"dependencies": {
"express": "3.2.6"
},
"engines": {
"node": "0.10.11",
"npm": "1.2.25"
}
}
Luché con esto por un tiempo y tuve que volver a usar / public (from / dist) como la carpeta estática - funciona perfectamente ahora
Si ninguna de estas soluciones funcionó, verifique mi solución .
Asegúrese de que los subdirectorios de su directorio se agreguen a su repositorio de Git.