javascript - POST 请求保持等待状态,但从未给出响应
问题描述
我的 MERN 项目的后端服务器有问题。当我查看 google chrome 的控制台时,api 请求只是挂起,很长一段时间后它就失败了。
server.js 代码
const express = require('express');
const cors = require('cors');
const app = express();
const morgan = require('morgan');
const connectDB = require('./db');
const authRoutes = require('./routes/auth');
app.use(cors);
app.use(morgan('dev'));
app.use(express.json());
app.use('/api/auth', authRoutes)
connectDB();
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`Listening on port:${port}`));
auth.js 文件
const express = require('express');
const { signupValidator, validatorResult } = require('../middleware/validator')
const router = express.Router();
router.post('/signup', signupValidator, validatorResult);
module.exports = router;
验证器.js
const { check } = require('express-validator');
exports.signupValidator = [
check('username').not().isEmpty().trim().withMessage('All fields are requeired'),
check('email').isEmail().normalizeEmail().withMessage('Invalid Email'),
check('password').isLength({ min: 6 }).withMessage('Password must be at least 6 characters long')
]
exports.validatorResult = (req, res, next) => {
const result = this.validatorResult(req);
const hasErrors = !result.isEmpty();
if (hasErrors) {
const firstError = result.array()[0].msg;
return res.status(400).json({
errorMessage: firstError
})
/* console.log('hasErrors:', hasErrors);
console.log('result:', result);*/
}
next();
}
前端应用程序中的请求文件:
import axios from "axios";
export const signup = async (data) => {
const config = {
headers: {
'Content-type': 'application/json',
}
}
const response = await axios.post('/api/auth/signup', data, config);
return response;
}
我在后端的 package.json 上写了 "proxy":"http://localhost:8080"。当我启动 server.js 时,它只在终端上显示“正在侦听端口:8080”,仅此而已。我该如何回应?
解决方案
递归
当validatorResult
函数被调用时,你要做的第一件事是:
const result = this.validatorResult(req);
...递归调用它。无限地。不要那样做。
没有反应
一旦你解决了这个问题, validatorResult
将:
- 返回 400 错误或
- 用于
next()
移交下一块中间件或端点
…但是没有下一个中间件或端点。
如果没有错误,您没有将发送响应的代码。
所以它永远坐在那里。
推荐阅读
- c# - 如何在asp.net webforms中生成5个不同的随机数
- javascript - JavaScript/TypeScript:将 UUID 从最高有效位 (MSB)/最低有效位 (LSB) 表示形式转换为字符串
- python - 在 BST Python 中删除节点
- python - 将字符串列表转换为数字但保留空格 - Python
- c# - C#条件调整
- python - 笔记本验证失败 | 木星
- c# - 如何将 Serilog 依赖注入到 .NET 控制台应用程序中的其余类中
- c# - Selenium SendKeys() 和 Click() 在链接导航后静默失败
- javascript - 将数组中的迭代元素推入空数组不起作用
- php - 特定页面的不同 Woocommerce 产品缩略图大小