【问题标题】:connect ECONNREFUSED 127.0.0.1:3000 on HEROKU when deploying NODE.JS + MONGODB (CRUD APP)部署NODE.JS + MONGODB(CRUD APP)时在HEROKU上连接ECONNREFUSED 127.0.0.1:3000
【发布时间】:2021-10-08 22:20:31
【问题描述】:

我正在尝试在 Heroku 上部署我的 node.js 项目,但是当我运行 heroku open 时,我不断收到此错误

{"message":"connect ECONNREFUSED 127.0.0.1:3000","name":"Error","stack":"Error: connect ECONNREFUSED 127.0.0.1:3000\n    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1148:16)","config":{"url":"http://localhost:3000/api/users","method":"get","headers":{"Accept":"application/json, text/plain, */*","User-Agent":"axios/0.21.1"},"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1},"code":"ECONNREFUSED"}

当我刚刚运行npm start时,我的应用程序在本地服务器上完美运行

我已经阅读了许多帖子并观看了许多 youtube 视频,但我找不到此错误的答案。我是 FULL STACK DEV 的新手,非常感谢您的帮助。

谢谢

我已经使用heroku config:set 和 Heroku 仪表板输入了配置变量,这里是代码

server.js

const express = require('express');
const dotenv = require('dotenv');
const morgan = require('morgan');
const bodyparser = require("body-parser");
const path = require('path');

const connectDB = require('./server/database/connection');
const app = express();

dotenv.config( { path : 'config.env'} )
const PORT = process.env.PORT || 8080

// log requests
app.use(morgan('tiny'));

// mongodb connection
connectDB();


// parse request to body-parser
app.use(bodyparser.urlencoded({extended : true}))

// set view engine
app.set("view engine", "ejs")
//app.set("views", path.resolve(__dirname, "views/ejs"))

// load assets
app.use('/css', express.static(path.resolve(__dirname, "assets/css")))
app.use('/img', express.static(path.resolve(__dirname, "assets/img")))
app.use('/js', express.static(path.resolve(__dirname, "assets/js")))


// load routers
app.use('/', require('./server/routes/router'))

app.listen(process.env.PORT||PORT, ()=> { console.log(`Server is running on http://localhost:${PORT}`)});

connection.js

const mongoose = require('mongoose');

const connectDB = async () => {
    try{
        //mongodb connection string
        const con =  await mongoose.connect(process.env.MONGO_URI ,{
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useCreateIndex: true,
            useFindAndModify: false,
        })

        console.log(`MongoDB connected : ${con.connection.host}`);
    }catch(err){
        console.log(err);
        process.exit(1);
    }
}

module.exports = connectDB

过程文件

web: npm start

config.env

PORT = 3000
MONGO_URI=mongodb+srv://admin_m:******@cluster0.dbljb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

package.json

{
  "name": "crud_app",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "dev": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "bootstrap": "^5.0.2",
    "dotenv": "^10.0.0",
    "ejs": "^3.1.6",
    "evo-calendar": "^1.1.3",
    "express": "^4.17.1",
    "jquery": "^3.6.0",
    "jsdom": "^16.6.0",
    "jsdon": "^0.1.15",
    "mongoose": "^5.13.0",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.7",
    "rrule": "^2.6.8"
  }
}

【问题讨论】:

    标签: javascript node.js mongodb heroku deployment


    【解决方案1】:

    我也遇到了同样的问题,经过大量试验和错误后发现问题出在我的 URL 上,我将它传递给 axios.get 方法以从数据库中获取数据到在我的索引页面上呈现。 那个 URL 是 localhost:3000 你需要在部署应用后更新到 heroku 提供的那个

    另外更好的方法是使用 Axios 的 baseURL 属性来设置你的 URL 一次,然后在开发和生产环境中相应地使用它

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 2021-02-27
      • 2021-01-04
      • 2022-12-30
      • 2020-04-10
      • 1970-01-01
      • 2022-11-09
      • 2022-08-18
      • 1970-01-01
      相关资源
      最近更新 更多