Node.js TypeError:res.json不是函数

Node.js TypeError:res.json不是函数,node.js,swagger,swagger-editor,Node.js,Swagger,Swagger Editor,我正在尝试使用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: "he

我正在尝试使用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控制器。当我试图通过调用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(问候语)有效。有人能解释为什么res.json和res.send没有吗?

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

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

使用此选项


utils.writeJson(res,“success”).end()我得到类型错误:当我更改res.json(问候语)时res.send不是一个函数;发送(问候语);你能演示一下如何使用
hello
控制器吗?我想当我尝试Swagger API时,控制器正在被使用。UI说它正在调用curl-xget--header'Accept:text/html''。还有其他地方需要调用或指定吗?我在swagger stub中找到了nodejs服务器的文档。之所以需要它,主要是因为JS函数很难理解,因为它们的签名仅仅通过查看代码就不清楚,而且使用标记跟踪代码更难。我认为我们都可以使用更多的文档来了解swagger代码所使用的内容,这样我们就可以做出正确的猜测。也就是说,你的回答很有帮助。你能解释一下这有什么帮助吗?