【发布时间】:2021-01-22 02:24:57
【问题描述】:
我的 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;
validator.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”,仅此而已。我该如何回应?
【问题讨论】:
-
this.validatorResult(req);这不是会使调用递归吗? -
@souravsatyam 感谢您的回答。我导入了“validationResult”函数并将这部分代码编辑为“validationResult(req)”。调用仍然是递归的。
-
exports.validatorResult将 validatorResult 方法更改为其他方法,例如仅说validator。
标签: javascript node.js express http