Node.js TypeError:res.json不是函数
我正在尝试使用Swagger和Node.js创建一个简单的hello-world应用程序,当我调用GET时,它会打印出“hello”,但我得到的错误是:TypeError:res.json不是一个函数。使用Swagger编辑器,我创建了以下yaml api: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: "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代码所使用的内容,这样我们就可以做出正确的猜测。也就是说,你的回答很有帮助。你能解释一下这有什么帮助吗?