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

时间:2016-04-04 15:37:21

标签: node.js swagger swagger-editor

我正在尝试使用Swagger和Node.js创建一个简单的hello world应用程序,打印出" Hello,"当我调用GET但我收到错误: 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(问候语)有效。任何人都可以解释为什么res.json和res.send不要?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:-1)

使用这个

<块引用>

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