[英]Why am i getting the 404 error in express?I have created the files correctly in views and routes folders
[英]I have an express app deployed on Heroku but I have 404 (not found) error
一切都在我的 localhost:3000 中工作,并使用 localhost:5000 的 baseUrl
我将我的 baseUrl 更改为已部署的站点( https://mongodb-newsapi.herokuapp.com ),但我收到一条错误消息,提示找不到我的站点。
加载资源失败:服务器响应状态为 404(未找到)POST https://mongodb-newsapi.herokuapp.com/api/login 404(未找到)
这是我的 fetchDataApi:
import { axiosInstance } from './axios';
export const getDataApi = async (url, token) =>{
const res = await axiosInstance.get(`/api/${url}`,{
headers : {Authorization : token}
})
return res;
}
export const postDataApi =async (url, post, token) => {
const res = await axiosInstance.post(`/api/${url}`, post ,{
headers: {Authorization: token}
})
return res;
}
export const putDataApi = async (url , post, token) => {
const res = await axiosInstance.put(`/api/${url}`,post,{
headers :{Authorization: token}
})
return res;
}
export const patchDataApi = async (url , post, token) => {
const res = await axiosInstance.patch(`/api/${url}`, post , {
headers :{Authorization: token}
})
return res;
}
export const deleteDataApi = async (url , token) => {
const res = await axiosInstance.delete(`/api/${url}`,{
headers :{Authorization: token}
})
return res;
}
这是我的基本网址:
import axios from 'axios';
export const axiosInstance = axios.create({
baseUrl: "https://mongodb-newsapi.herokuapp.com/api"
});
这是我的 server.js:
require('dotenv').config();
const path = require('path');
const express = require("express");
const mongoose = require('mongoose');
const cookieparser = require('cookie-parser');
const authRouter = require('./routers/authRouter');
const userRouter = require('./routers/userRouter');
const app = express();
app.use(express.json())
app.use(cookieparser());
app.use('/api', authRouter);
app.use('/api', userRouter);
app.use(express.static(path.join(__dirname, "/client/build")));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, '/client/build', 'index.html'));
});
我没有添加 mongoose.connect 因为我有我的帐户。
这是 authCtrl:
const Users = require("../models/userModel");
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const authCtrl = {
register: async (req, res) => {
try {
const { fullName, userName, email, password } = req.body;
const newUsername = userName.toLowerCase().replace(/ /g, '');
const user_name = await Users.findOne({ userName: newUsername })
if(user_name) return res.status(400).json({ msg: 'This UserName Already Exist.' })
const Email = await Users.findOne({ email: email })
if(Email) return res.status(400).json({ msg: 'This Email Already Exist.' })
if(password.length < 8) return res.status(400).json({ msg: 'Password must be atleast 8 Characters.' })
const passwordHash = await bcrypt.hash(password, 15);
const newUser = new Users({
fullName, userName:newUsername, email, password:passwordHash
})
const access_token = createAccessToken({id: newUser._id});
const refresh_token = createRefreshToken({id: newUser._id});
console.log({access_token, refresh_token})
res.cookie('refreshtoken', refresh_token, {
httpOnly: true,
path: "/api/refresh_token",
maxAge: 24*30*60*60*1000
})
await newUser.save();
res.json({
msg: "Registered Success",
access_token,
user: {
...newUser._doc,
password: ''
}
})
} catch (error) {
res.status(500).json({ msg: error.message })
}
},
login: async (req, res) => {
try {
const {email , password} = req.body;
const user = await Users.findOne({email})
.populate("friends following" , "-password")
if(!user) return res.status(400).json({msg: 'User does not exists'})
const isMatch = await bcrypt.compare(password,user.password);
if(!isMatch) return res.status(400).json({msg: 'User Password is incorrect'})
const access_token= createAccessToken({id: user._id});
const refresh_token= createRefreshToken({id: user._id});
res.cookie('refreshtoken', refresh_token,{
httpOnly: true,
path:'/api/refresh_token',
maxAge: 24*30*60*60*1000
})
res.json({
msg:"login sucess",
access_token,
user:{
...user._doc,
password:''
}
})
} catch (err) {
return res.status(500).json({msg: err.message})
}},logout: async ( req, res ) => {
try {
res.clearCookie('refreshtoken', {path: '/api/refresh_token'})
res.json({msg: "Logged out"})
} catch (error) {
return res.status(500).json({ msg: error.message })
}},generateAccessToken: async (req, res) => {
try {
const rf_token = req.cookies.refreshtoken;
if(!rf_token) return res.status(400).json({msg:"please login now"})
jwt.verify(rf_token, process.env.REFRESHTOKENSECRET, async(err,result)=>{
if(err) return res.status(400).json({msg:"Please login now"})
const user = await Users.findById(result.id).select("-password")
.populate("friends following")
if(!user) return res.status(400).json({msg:"user does not exist"})
const access_token= createAccessToken({id: result.id});
res.json({
access_token,
user
})
})
} catch (error) {
res.stauts(500).json({msg: error.message})
}},}const createAccessToken = ( payload) =>{
return jwt.sign(payload, process.env.ACCESSTOKENSECRET, {expiresIn: "1d"})}const createRefreshToken = ( payload) =>{
return jwt.sign(payload, process.env.REFRESHTOKENSECRET,{expiresIn: "30d"})}module.exports = authCtrl
这是 github 存储库:
我认为您引用了太多文章或视频。 当我在那里检查你的仓库时,你编写了 2-3 种执行相同任务的代码。 我建议您一次只关注一种资源。 可能这会对你有所帮助。 https://www.thapatechnical.com/2021/04/how-to-deploy-mern-projects-on-heroku.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.