Node.js экспресс-сервер работает на локальном хосте, но возникли проблемы на хосте Heroku

#javascript #node.js #express #heroku

#javascript #node.js #экспресс #heroku

Вопрос:

У меня проблема с моим express.js код, он работает нормально для меня на localhost, но он не работает для меня на Heroku, я думаю, что есть какая-то ошибка, вот мой код и ошибки, с которыми я столкнулся

server.js

 const express = require("express")
const app = express()

let PORT = process.env.PORT || 3000

//for __dirname 
const path = require('path')

//Render css if it wasnt included in html file
app.use(express.static('./Pages'));

//redirect link to home page
app.get('/', function(request, response){
    response.redirect('/home')
})

//home page response
app.get('/home', function(request, response){
    response.sendFile(path.join(__dirname, './Pages', 'home.html'))
})

//about page response
app.get('/about', function(request, response){
    response.sendFile(path.join(__dirname, "./Pages", "about.html"))
})

//listening to port
app.listen(PORT, function(){
    console.log("Server is online on port: "   PORT)
})
 

На Heroku это выдает «ошибку приложения»
он регистрирует ПОРТ, на котором он запущен, поэтому я могу сказать, что код запущен, поэтому это не проблема с моим Procfile, у него также есть «favicon.io » ошибка, и я не знаю, как это исправить

Вот мои журналы Heroku с ошибками

 at=error code=H14 desc="No web processes running" method=GET path="/" host=candy-lounge.herokuapp.com request_id=f550b1f8-6152-4a01-97b3-81fec080fed5 fwd="(seems like an ip so i deleted it)" dyno= connect= service= status=503 bytes= protocol=https
2020-12-10T17:35:47.907477 00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=candy-lounge.herokuapp.com request_id=cf93d0a2-0d01-4952-b037-92cc733a9dd1 fwd="(seems like an ip so i deleted it)" dyno= connect= service= status=503 bytes= protocol=https
 

Комментарии:

1. Вы установили переменную среды PORT в heroku на 80 ? В противном случае вам может потребоваться перейти к yourherokuapp.heroku.com:3000

2. Можете ли вы показать сообщения об ошибках

3. Предполагается, что заголовок вопроса описывает проблему, с которой вы столкнулись, а не ваш опыт, когда вы пытаетесь решить проблему.

4. Вы можете видеть server is online on the port: xxxx в консоли.

5. Я понял это, if (process.env.NODE_ENV === 'production') { app.use(express.static('client/build')); } отвечая вам с подробностями

Ответ №1:

Итак, я решил проблему, проблема была действительно странной, но простой, каким-то образом heroku чувствителен к именам файлов, поэтому он просто запустил сервер, но не смог найти ни одного файла, который server.js просил о