Node.js TypeError: res.json is not a function

Node.js TypeError: res.json is not a function

我正在尝试使用 Swagger 和 Node.js 创建一个简单的 hello world 应用程序,当我调用 GET 时打印出 "Hello, " 但我收到错误:TypeError: res.json 不是函数 。使用 Swagger 编辑器,我创建了以下 yaml api:

---
swagger: "2.0"
info:
 version: "1.0.0"
 title: "Hello World"
paths:
/hello:
 get:
  x-swagger-router-controller: "hello_world"
  description: "Returns 'Hello' to the caller"
  operationId: "hello"
  parameters:
  - name: "name"
    in: "query"
    description: "The name of the person to whom to say hello"
    required: false
    type: "string"
  responses:
    200:
      description: "Returns greeting"
      schema:
        type: "string"
        title: "HelloWorldResponse"
    400:
      description: "Invalid characters in \"user\" were provided"
definitions: {}

我使用 swagger 编辑器生成了一个 node.js 服务器并创建了一个 hello_world.js 控制器。当我尝试通过调用 http://localhost:8081/hello?name=victory 使用 Swagger UI 测试代码时,我看到错误:TypeError: res.json 不是函数。这是我的 node.js 代码:

'use strict';

var util = require('util');

module.exports = {
 hello: hello
};

function hello(req, res) {
// variables defined in the Swagger document can be referenced using  req.swagger.params.{parameter_name}
 var name = req.swagger.params.name.value || 'stranger';
 var greeting = util.format('Hello, %s!', name); 
 // this sends back a JSON response which is a single string
 res.json(greeting); //ERRORS OUT HERE
}

我是 Swagger 和 Node.js 的新手,所以我不确定为什么会收到错误或解决错误的最佳方法。如果您能给我任何帮助,我们将不胜感激。

更新:事实证明 res.end(greeting) 有效。谁能解释为什么 res.json 和 res.send 没有?

json 函数被 express.js 添加到响应对象,但是 swagger 生成器生成的代码使用 connect.js(不是 express)。

Express 建立在 connect 之上,如果您想要 express 的功能,您可以轻松地在 swagger 生成器生成的代码中使用 express 代替 connect。在 index.js 中找到表示 const app = require('connect')(); 的行,并将 'connect' 替换为 'express'。

使用这个

utils.writeJson(res, "sucess").end();