Node.js+MongoDB中出现Cannot GET /api/auth/logowanie错误求助
问题:调用
/api/auth/logowanie时返回"Cannot GET /api/auth/logowanie" 在Node.js + MongoDB开发过程中,调用登录接口获取数据时收到错误提示:Cannot GET /api/auth/logowanie。已确认端口与URL完全正确,但问题始终未解决。
相关代码
auth.js(路由文件)
const router = require('express').Router(); const CryptoJs = require('crypto-js'); const User = require('../models/user'); // 注册 router.post('/rejestracja', async (req, res)=>{ const newUser = new User({ username: req.body.username, email: req.body.email, password: CryptoJs.AES.encrypt(req.body.password, process.env.PASS_SEC).toString(), }); try{ const saveduser = await newUser.save(); res.status(201).json(saveduser); }catch(err){ res.status(500).json(err); } }); // 登录 router.post('/logowanie', async (req, res) => { try{ const user = await User.findOne({username: req.body.username}); !user && res.status(401).json("用户名或密码错误") const hashedpassword = CryptoJs.AES.decrypt(user.password, process.env.PASS_SEC); const password = hashedpassword.toString(CryptoJs.enc.Utf8); password !== req.body.password && res.status(401).json("用户名或密码错误") res.status(200).json(user); }catch(err){ res.status(500).json(err); } }) module.exports = router
index.js(入口文件)
const express = require('express'); const app = express(); const dotenv = require('dotenv'); dotenv.config(); const userRoute = require("./routes/user"); const authRoute = require("./routes/auth"); const mongoose = require('mongoose'); const { CLIENT_RENEG_LIMIT } = require('tls'); mongoose .connect(process.env.MONGO_URL) .then(() => console.log('已连接到MongoDB服务器')) .catch((err) => { console.log(err); }); app.use(express.json()); app.use('/api/users', userRoute); app.use('/api/auth', authRoute); app.listen(process.env.PORT || 5300, ()=>{ console.log('监听端口5300'); });
请求情况
从请求截图可见,当前使用GET请求访问/api/auth/logowanie接口。
问题原因与解决方案
核心原因:代码中登录接口注册的是
POST方法(router.post('/logowanie', ...)),但实际请求用了GET方法,Express会判定该路径无对应GET路由,因此返回Cannot GET错误。解决步骤:
- 在请求工具中将方法改为POST;
- 在请求体(Body)中以
JSON格式提交username和password参数; - 重新测试接口即可正常响应。
额外优化建议:
- 错误逻辑避免用
&&链式判断,改用if语句并添加return,防止多次响应:if (!user) { return res.status(401).json("用户名或密码错误"); } // ... if (password !== req.body.password) { return res.status(401).json("用户名或密码错误"); }
- 错误逻辑避免用
内容的提问来源于stack exchange,提问作者Z3eme
相关产品推荐
相关产品推荐

