【问题标题】:Web app upload with nodejs server error to Heroku带有nodejs服务器错误的Web应用程序上传到Heroku
【发布时间】:2020-08-10 07:19:00
【问题描述】:

我正在尝试将我的应用程序上传到 Heroku,它的前端和发送邮件后端都在我的本地机器上工作。请帮助任何人解决我的问题,这将有很大帮助,因为这是我的第一个实践项目。

结构和错误如下:

Heroku 错误

heroku 日志 --tail

客户端包.json

{
  "name": "hephy-web",
  "version": "0.1.0",
  "private": true,

  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "axios": "^0.19.2",
    "bootstrap": "^4.4.1",
    "react": "^16.13.1",
    "react-bootstrap": "^1.0.0",
    "react-dom": "^16.13.1",
    "react-router-dom": "^5.1.2",
    "react-scripts": "3.4.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "heroku-postbuild": "cd client && npm install && npm run build",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

服务器包.json

{
  "name": "hephy-back-end",
  "version": "1.0.0",
  "description": "Hephy BackEnd",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Uchom",
  "license": "ISC",
  "dependencies": {
    "@sendgrid/mail": "^7.0.1",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-handlebars": "^4.0.3",
    "nodemailer": "^6.4.6"
  }
}

服务器 app.js

require('dotenv').config()
const path = require('path')
var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');
var cors = require('cors');
require('dotenv').config()


var transport = {
  service: 'gmail',
  auth: {
    user: process.env.EMAIL_USER,
    pass: process.env.EMAIL_PASS
  }
}

var transporter = nodemailer.createTransport(transport)

transporter.verify((error, success) => {
  if (error) {
    console.log(error);
  } else {
    console.log('Server is ready to take messages');
  }
});

router.post('/send', (req, res, next) => {
  var name = req.body.name
  var email = req.body.email
  var message = req.body.message
  var content = `Name: ${name} \n \nE-mail: ${email} \n \nMessage: ${message} `

  var mail = {
    from: name,
    to: 'xxxxxxxxxxx',  // Change to email address that you want to receive messages on
    subject: 'Hephy Inquiry Contact',
    text: content
  }

  transporter.sendMail(mail, (err, data) => {
    if (err) {
      res.json({
        status: 'fail'
      })
    } else {
      res.json({
        status: 'success'
      })
    }
  })
})

const app = express()
app.use(cors())
app.use(express.json())
app.use('/', router)
app.listen(3005)

// Serve static files from the React frontend app
app.use(express.static(path.join(__dirname, 'client/build')))

【问题讨论】:

    标签: node.js reactjs github heroku


    【解决方案1】:

    看起来您的应用正在侦听端口 3005,这在 Heroku 上不起作用,您需要绑定到提供的端口

    const PORT = process.env.PORT || 3005;
    

    【讨论】:

    • 感谢您宝贵的时间 BEPPE C 的指导。......我添加了这个“const PORT = process.env.PORT || 3005 ;"到服务器的 app.js 顶部并调用 PORT 到 app.listen() 就像 app.listen(PORT) 一样,但没有运气............任何其他建议,请
    • 我看日志更好(虽然端口绑定现在很好)启动时出现错误(缺少脚本启动),不确定问题出在哪里,但看起来是这样应用在 Heroku 上部署后启动。也许这可以帮助stackoverflow.com/questions/34631300/…。抱歉,无法提供更多帮助
    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2012-12-13
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2013-04-06
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多