首页 > 解决方案 > Heroku 构建不与数据库通信

问题描述

我的 Heroku 构建不会与我在 mongodb 上的数据库通信。我已经尝试在 localhost 5000 上运行它并且它可以工作,但当我推送到 heroku 时它就无法工作。我的 server.js 是这样设置的:

const express = require('express')
const cors = require('cors') 
const mongoose = require('mongoose')

require('dotenv').config();

const app = express();
const port = process.env.PORT ||  5000;

app.use(cors());
app.use(express.json()); 
app.use(express.static('client/build'));

const uri = process.env.ATLAS_URI
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex: true})

const connection = mongoose.connection;
connection.once('open', () => {
console.log('mongoDB database connection established successfully')
})

const exerciseRouter = require('./routes/exercises') 
const usersRouter = require('./routes/users');


app.use('/exercises', exerciseRouter)
 app.use('/users', usersRouter); 

app.listen(port, () => {
console.log(`server is running on port: ${port}`)
})

我在 console.log 时收到的错误消息是:

xhr.js:184 POST https://fitnesspush.herokuapp.com/%20users/add 404 (Not Found) (匿名) @ xhr.js:184 e.exports @ xhr.js:13 e.exports @ dispatchRequest.js :50 Promise.then (async) l.request @ Axios.js:61 r.forEach.l。@Axios.js:86 (匿名) @bind.js:9 值 @create-user.component.js:29 u @react-dom.production.min.js:14 d @react-dom.production.min.js :14 (匿名) @ react-dom.production.min.js:14 v @ react-dom.production.min.js:15 @ react-dom.production.min.js:52 ot @ react-dom.production .min.js:51 ut @ react-dom.production.min.js:52 dt @ react-dom.production.min.js:56 I @ react-dom.production.min.js:287 W @ react-dom .production.min.js:19 Jt @ react-dom.production.min.js:70 Gt @ react-dom.production.min.js:69 t.unstable_runWithPriority @ scheduler.production.min.js:19

zo @ react-dom.production.min.js:122 A @ react-dom.production.min.js:287 Kt @ react-dom.production.min.js:68 createError.js:16 未捕获(承诺)错误:在 XMLHttpRequest.d.onreadystatechange (xhr.js:69) 的 e.exports (settle.js:17) 的 e.exports (createError.js:16) 的请求失败,状态码为 404 e.exports @ createError.js: 16 e.exports @ set.js:17 d.onreadystatechange @ xhr.js:69 Promise.then (async) value @ create-user.component.js:30 u @ react-dom.production.min.js:14 d @ react-dom.production.min.js:14 (匿名) @ react-dom.production.min.js:14 v @ react-dom.production.min.js:15 @react-dom.production.min。 js:52 ot@react-dom.production.min.js:51 ut@react-dom.production.min.js:52 dt@react-dom.production.min.js:56 我@react-dom.production。 min.js:287 W @ react-dom.production.min.js:19 Jt @ react-dom.production.min.js:70 Gt @ react-dom.production.min.js:69 t.unstable_runWithPriority @ scheduler.production.min.js:19 zo @ react-dom.production.min.js:122 A @ react-dom.production.min。 js:287 Kt@react-dom.production.min.js:68

我的客户端文件夹中的 package.json 如下所示:

{“版本”:“0.1.0”,“私有”:true,“依赖项”:{“@testing-library/jest-dom”:“^4.2.4”,“@testing-library/react”:“ ^9.5.0”、“@testing-library/user-event”:“^7.2.1”、“axios”:“^0.20.0”、“bootstrap”:“^4.5.2”、“dotenv”: “^8.2.0”、“react”:“^16.13.1”、“react-datepicker”:“^3.1.3”、“react-dom”:“^16.13.1”、“react-router-dom ": "^5.2.0", "react-scripts": "^3.4.3" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", “测试”:“反应脚本测试”,“弹出”:“反应脚本弹出“
},“eslintConfig”:{“扩展”:“反应应用程序”},“浏览器列表”:{“生产”:[>0.2%”,“没有死”,“不是op_mini全部”] ,“开发”:[“最后 1 个 chrome 版本”,“最后 1 个 Firefox 版本”,“最后 1 个 safari 版本”]},“代理”:“http://localhost:5000/”}//本地主机:5000/" }//本地主机:5000/" }

这是我根文件夹中的一个:

{ "name": "backend",
"main": "index.js",
"scripts": { "test": "echo "Error: no test specified" && exit 1", "build": "cd client && npm run build”、“install-client”:“cd client && npm install”、“heroku-postbuild”:“cd client && npm install && npm run build”、“start”:“node server.js”、“client ": "cd client && npm start", "dev": "concurrently -n 'server,client' -c 'red,green' "nodemon server.js" "npm run client"" }, "author": "" ,
“许可证”:“ISC”,
“依赖项”:{ "cors": "^2.8.5", "dotenv": "^8.2.0", "express": "^4.17.1", "mongoose": "^5.10.0" } }"version": “1.0.0”,
“描述”:“”,

标签: jsonreactjsheroku

解决方案


推荐阅读