Estoy tratando de implementar en heroku pero obtengo un 503 a pesar de que se ejecuta en localhost. Tengo curiosidad por saber si mi servidor está configurado correctamente, ya que soy más nuevo en la programación. Espero que alguien pueda indicarme la dirección correcta en cuanto a dónde buscar o darme una sugerencia, ya que he pasado innumerables horas en Google hasta este punto durante un par de semanas.
Mi pregunta principal es si he configurado mi servidor correctamente. No estoy seguro de que mi oyente funcione para heroku y mi .get se usa para depurar en localhost cuando se configuró inicialmente.
También mi proyecto completo está disponible aquí:
https://github.com/dirkdir/DerekDevSite
var express = require('express'); var app = express(); var path = require('path'); app.use(express.static(path.join(__dirname, 'public'))); app.get('/json', function(req, res) { console.log("GET the json"); res .status(200) .json( {"jsonData" : true} ); }); app.get('/file', function(req, res) { console.log("GET the file"); res .status(200) .sendFile(path.join(__dirname, 'app.js')); }); var server = app.listen(process.env.PORT || 5000), function() { var port = server.address().port; console.log("Express is working on port " + port); });Registros:
2017-04-24T20:04:43.755866+00:00 aplicación[web.1]: en Module._compile (module.js:542:28) 2017-04-24T20:04:43.755867+00:00 aplicación[web. 1]: en Object.Module._extensions..js (module.js:579:10) 2017-04-24T20:04:43.755868+00:00 app[web.1]: en Module.load (module.js: 487:32) 2017-04-24T20:04:43.755868+00:00 aplicación[web.1]: en tryModuleLoad (module.js:446:12) 2017-04-24T20:04:43.755869+00:00 aplicación[ web.1]: en Function.Module._load (module.js:438:3) 2017-04-24T20:04:43.755869+00:00 app[web.1]: en Module.runMain (module.js:604 :10) 2017-04-24T20:04:43.755870+00:00 aplicación[web.1]: en ejecución (bootstrap_node.js:393:7) 2017-04-24T20:04:43.755871+00:00 aplicación[web .1]: al inicio (bootstrap_node.js:150:9) 2017-04-24T20:04:43.846556+00:00 heroku[web.1]: el estado cambió de inicio a bloqueado 2017-04-24T20:26:31.826133 +00:00 heroku[router]: at=código de error=H10 desc="Aplicación bloqueada" method=GET path="/" host=derekdyerdev.herokuapp.com request_id=609ef253-0a56-41ac-b877-1fb242f6f4e1 fwd=" 69.36.89.218" dinamómetro = conectar = servicio = estado = 503 bytes es= protocol=https 2017-04-24T20:26:32.319732+00:00 heroku[router]: at=código de error=H10 desc="Aplicación bloqueada" method=GET path="/favicon.ico" host=derekdyerdev. herokuapp.com request_id=f2a34e62-9765-
Tiene el corchete en la línea 34 de su archivo app.js en el lugar equivocado. Dado que la función es una devolución de llamada, debe estar dentro de los parámetros.
Cambia ese último bloque a esto:
const server = app.listen(process.env.PORT || 5000, () => { const port = server.address().port; console.log(`Express is working on port ${port}`); }); También modifiqué el Procfile a solo esto:
web: node app.jsDespués de modificarlo, pude ejecutarlo localmente y lo implementé en mi Heroku solo para probar, y funciona bien :)
Esto puede ser útil para alguien. El contenido inicial de mi perfil era este:
web : node server.jsy después de cambiarlo a esto, funcionó:
web:node server.jsEl espacio entre el símbolo 'web' y ':' era el problema. aunque raro
Tuve un problema similar. Trabajó en localhost... no cuando se implementó en Heroku. ¿Mi problema? Había clonado un proyecto (node_modules también) y mi paquete.json no tenía express, minimist, etc., por lo que obviamente falló.
Sugerencia: al implementar, vea los registros de inmediato para que pueda ver lo que sucede durante el proceso de implementación. Ver los registros después de que haya fallado solo le mostrará el final de los registros...
Por último, asegúrese de escuchar en el puerto adecuado. Yo hago esto (como otros también lo hacen)
var serverPort = 8080; . . . var port = process.env.PORT || serverPort;