過去一周,我一直在嘗試為我的第一個 MERN 應用程式部署服務器,但我似乎無法讓它作業。當我在本地托管它時它作業得很好,但我似乎無法讓heroku服務器作業它通常會因錯誤H10而崩潰。
索引(index.js)
import express from "express";
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';
import postRoutes from './routes/posts.js';
import dotenv from 'dotenv';
const app = express();
dotenv.config();
app.use(bodyParser.json({ limit: "30mb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }));
app.use(cors());
app.use('/posts', postRoutes);
app.get('/', (req,res) => {
res.send('Expense Tracker API working')
} )
mongoose.connect(process.env.CONNECTION_URL || "mongodb srv://expensetracker:[email protected]/?retryWrites=true&w=majority");
mongoose.connection.on('connected', () => {
console.log("Server is connected with Mongoose!");
});
app.listen(process.env.PORT || 5000, () => {
console.log('Server is running on port')
});
包.json
{
"name": "server",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.20.0",
"cors": "^2.8.5",
"dotenv": "^16.0.1",
"express": "^4.18.1",
"mongoose": "^6.3.6",
"nodemon": "^2.0.16"
},
"description": ""
}
檔案
web: node index.js
路線(路線/posts.js)
import express from "express";
import { getPosts, createPosts, updatePost, deletePost } from '../controllers/posts.js'
const router = express.Router();
router.get('/', getPosts);
router.post('/', createPosts);
router.patch('/:id', updatePost)
router.delete('/:id', deletePost);
export default router;
控制器(控制器/posts.js)
import mongoose from "mongoose";
import PostMessage from "../models/postMessage.js";
export const getPosts = async (req, res) => {
try {
const postMessages = await PostMessage.find();
res.status(200).json(postMessages);
} catch (error) {
res.status(401).json({ message: error.message });
}
}
export const createPosts = async(req, res) => {
const post = req.body;
const newPost = new PostMessage(post);
try {
await newPost.save();
res.status(201).json(newPost);
} catch (error) {
res.status(409).json({ message: error });
}
}
export const updatePost = async(req, res) => {
const { id: _id } = req.params
const post = req.body;
if(!mongoose.Types.ObjectId.isValid(_id)) return res.status(404).send("Unable to find post with that id");
const updatedPost = await PostMessage.findByIdAndUpdate(_id, { ...post, _id}, { new: true} );
res.json(updatedPost)
}
export const deletePost = async(req, res) => {
const { id } = req.params
if(!mongoose.Types.ObjectId.isValid(id)) return res.status(404).send("Unable to find post with that id");
await PostMessage.findByIdAndRemove(id);
res.json({ message: 'Post deleted sucess' })
}
uj5u.com熱心網友回復:
我使用這個heroku 資源來找到答案。我必須CONNECTION_URL在 heroku 上設定我的,并允許從任何地方訪問我的 mongodb。
uj5u.com熱心網友回復:
為了解決這個問題,我們必須處理名為 Procfile 的檔案,其內容如下:web: node ./app.js
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495425.html
