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

Node.js MVC模式实践报错:访问/api/v1/test/some触发类型错误

错误原因分析

这个TypeError [ERR_INVALID_ARG_TYPE]的核心问题是:代码中某个位置错误地将testcontroller函数/模块对象,传递给了需要接收字符串、Buffer、数组类等类型参数的方法,导致参数类型不匹配。结合你的Express MVC场景,最常见的触发点有两个:

常见错误场景及修复

场景1:路由配置错误传递控制器

如果你的testroutes.js写成了下面这样,就会直接触发错误:

const express = require('express');
const router = express.Router();
const testcontroller = require('../controllers/testcontroller');

// 错误:直接把整个控制器模块(或控制器函数)传给了路由方法
router.get('/some', testcontroller);

Express的路由方法(如router.get)需要接收具体的请求处理函数,而不是整个控制器模块。修复方式是引用控制器内定义的处理方法:

// 假设testcontroller.js导出了名为handleSome的处理函数
router.get('/some', testcontroller.handleSome);

场景2:控制器内部响应方法传参错误

如果你的testcontroller.js里存在这样的错误代码,也会抛出该异常:

exports.handleSome = (req, res) => {
  // 错误:把testcontroller函数本身传给了res.send
  res.send(testcontroller);
};

res.send()、res.json()这类响应方法需要接收字符串、对象、Buffer等合法响应内容,不能传入函数。修复方式改为传递合法内容:

exports.handleSome = (req, res) => {
  res.send('请求处理成功');
  // 或者返回JSON格式数据
  // res.json({ code: 200, msg: 'success' });
};

你可以对照错误栈里的具体文件和行号,快速定位是路由配置还是控制器内部的代码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:43:13