You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯Node.js编写查询控制器时'response.status is not function'错误排查

解决Node.js中"response.status is not a function"错误

错误原因分析

  • 原生Node.js的http模块提供的response对象没有status()和json()方法,这两个方法是Express、Koa这类Web框架对原生对象的封装,直接使用原生API会报错。
  • 路由判断逻辑错误:你写的request === '/admins/all'是把整个请求对象和字符串做比较,永远不会成立,应该用request.url === '/admins/all'来匹配请求路径。
  • 服务器代码中,调用requestController后立刻执行response.end('Server Ready'),会提前终止响应,导致控制器里的响应逻辑无法正常执行。

修正后的控制器代码

const Admins = require('../models/admins')
const Films = require('../models/films')
const Categories = require('../models/categories')

module.exports = function requestController(request, response) {
    // 修正路由判断:用request.url匹配路径
    if (request.method === 'GET' && request.url === '/admins/all') {
        Admins.findAll()
            .then(data => {
                // 原生Node.js设置响应头并返回JSON
                response.writeHead(200, { 'Content-Type': 'application/json' });
                response.end(JSON.stringify(data));
            })
            .catch(err => {
                response.writeHead(500, { 'Content-Type': 'application/json' });
                response.end(JSON.stringify({ error: err.message }));
            });
    } else {
        // 处理不匹配的请求
        response.writeHead(400, { 'Content-Type': 'application/json' });
        response.end(JSON.stringify({ message: '无效请求' }));
    }
}

修正后的服务器代码

const db = require('./base');
const http = require('http');
const port = 3500;
const Sequelize = require('sequelize');
const requestController = require('./controllers/main-controller');

http.createServer(function(request, response) {
    console.clear();
    console.log('=================================');
    console.log('||     SERVER WORKED           ||');
    console.log('=================================');
    // 去掉提前执行的response.end,由控制器处理响应结束
    requestController(request, response);
}).listen(port);

内容的提问来源于stack exchange,提问作者SLIW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:57:32