【发布时间】:2022-07-13 22:28:42
【问题描述】:
显然有重复的问题,但答案对我没有帮助。作为 nodeJS 和 Express 的初学者,要么有一些基本的东西我还不明白,要么正在发生一些奇怪的事情。
我有两条 Express 路线,第一条运行良好。但是当我开始研究第二个时,我在尝试使用“res”发送回 HTTP 状态代码时立即遇到了问题。
server.js 所有不相关的内容都已编辑:
const express = require('express')
const session = require('express-session')
const MySQLStore = require('express-mysql-session')(session)
const db = require('./database')
const route1 = require('./routes/route1')
const route2 = require('./routes/route2')
const sessionStore = new MySQLStore({}, db)
const app = express()
app.use(express.json())
app.use(session({
// session settings
}))
// Routes
app.use('/api/route1', route1)
app.use('/api/route2', route2)
app.listen(process.env.PORT || 8000)
route1.js (所有不相关的内容都已编辑):
const express = require('express')
const db = require('../database')
const router = express.Router()
// Middleware
function validateData(req, res, next) {...}
async function validateUser(req, res, next) {...}
// POST data to db
router.post('/', validateData, validateUser, async (req, res) => {
try {
const results = await db.query(
// Querry to db
)
} catch(err) {
// Handle error
}
res.status(200).end()
})
module.exports = router
route2.js - 发生错误的地方 (所有不相关的内容都已编辑):
const express = require('express')
const db = require('../database')
const router = express.Router()
router.get('/', (req, res) => {
res.statusCode(200).end() // TypeError: res.statusCode is not a function
})
module.exports = router
【问题讨论】:
-
您在 route2.js 中有错字。你调用 res.statusCode(200) 而不是 res.status(200)。或者您可以通过 statusCode 设置它 - res.statusCode = 200;
-
您可以使用
res.statusCode = 200或res.status(200)
标签: node.js express express-router