我在 Heroku 上部署了我的第一個 MERN 堆疊應用程式,它基本上是一個酒類別庫存管理器。
但是它無法訪問資料庫。每當我撥打 Axios 電話時,我的請求都會被拒絕。我今天浪費了 7 個小時試圖修復它,但無濟于事。任何幫助表示贊賞。
這是我的 server.js
const express = require('express')
const dotenv = require('dotenv').config()
const connectDB = require('./config/db')
const {errorHandler} = require('./middleware/errorMiddleware')
const port = process.env.PORT || 5000
const app = express()
const path = require('path')
const cors = require('cors')
const mongoose = require('mongoose')
connectDB()
app.use(express.json());
app.use(cors());
app.use('/api/users', require('./routes/userRoutes'))
app.use('/api/inventory', require('./routes/inventoryRoutes'))
app.use('/api/weekly', require('./routes/weeklyRoutes'))
mongoose.connect( process.env.MONGODB_URI, { useNewUrlParser: true })
// Serve frontend
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '../frontend/build')))
app.get('*', (req, res) =>
res.sendFile(
path.resolve(__dirname, '../', 'frontend', 'build', 'index.html')
)
)
} else {
app.get('/', (req, res) => res.send('Please set to production'))
}
app.use(errorHandler)
app.listen(port, () => {
console.log(`Server up on ${port}`)
})
這是我的 package.json
{
"name": "stockify-inventory-manager",
"version": "1.0.0",
"description": "Manage your Alcohol Inventory easily",
"main": "server.js",
"scripts": {
"start": "node backend/server.js",
"server": "nodemon backend/server.js",
"client": "npm start --prefix frontend",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix frontend && npm run build --prefix frontend"
},
"author": "Steve Yoo",
"license": "MIT",
"dependencies": {
"bcryptjs": "^2.4.3",
"bootstrap": "^5.1.3",
"colors": "^1.4.0",
"cors": "^2.8.5",
"dotenv": "^16.0.0",
"express": "^4.17.3",
"express-async-handler": "^1.2.0",
"font-awesome": "^4.7.0",
"jsonwebtoken": "^8.5.1",
"mongoose": "^6.2.3",
"react-router-dom": "^6.2.1"
}
}
以下是我嘗試過的清單:
- mongoDB 上的白名單 IP 為 0.0.0.0/0
- 仔細檢查來自 mongoDB 的連接字串及其在 .env 中的設定方式
- 檢查是否有任何專案卡在開發依賴項而不是依賴項中
- 仔細檢查我的 Heroku 配置變數并確保它們匹配 .env
- 將 nodejs 更新到最新版本
是的,這在本地運行良好。
編輯:在 heroku local 上測驗一些東西時,我注意到在本地運行的后端會導致部署的應用程式按預期作業。但是,一旦我終止本地,它就無法再次訪問資料庫。似乎后端在部署時甚至沒有開始運行。仍然沒有線索....任何幫助表示贊賞
EDIT2:添加了錯誤截圖。在此處輸入影像描述
uj5u.com熱心網友回復:
我認為錯誤螢屏截圖在這里會有很大幫助,'因為我不知道您遇到了什么樣的錯誤,并且您說您無法連接到資料庫,然后嘗試將您的 Heroku 域添加到 MongoDB Allowed Domains。
另外,我看到您npm install在heroku-postbuild腳本中使用,但您不必這樣做,因為每當您將代碼推送到 heroku 時,它會自動運行npm install。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435820.html
標籤:javascript mongodb heroku 猫鼬 梅尔
