2016-04-04 12 views
1

SwaggerとNode.jsを使用してGETメソッドを呼び出すとエラーが表示されるので、単純なHello Worldアプリケーションを作成しようとしています:TypeError:res.jsonは関数ではありません。闊歩エディタを使用して、私は次のYAML APIを作成しました:Node.js TypeError:res.jsonは関数ではありません

--- 
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: {} 

私はNode.jsのサーバーを生成するために闊歩エディタを使用してhello_world.jsコントローラを作成しました。 Swagger UIを使用してhttp://localhost:8081/hello?name=victoryを呼び出してコードをテストしようとすると、次のエラーが表示されます。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 
} 

私が闊歩し、Node.jsのに新たなんだので、私は、なぜ私がエラーまたはそれをトラブルシューティングについて移動する最良の方法を取得していますかわかりません。あなたが私に与えることができるどんな助けも高く評価されるでしょう。

更新:res.end(greeting)が機能することが判明しました。 res.jsonとres.sendがなぜそうしないのか誰も説明できますか?

+0

'res.send'はいいですか? –

+0

私はTypeErrorを取得します.res.json(greeting)を変更すると、res.sendは関数ではありません。 res.send(挨拶); – jencoston

+0

あなたは 'hello'コントローラの使い方を表示できますか? –

答えて

4

json関数はexpress.jsによって応答オブジェクトに追加されますが、swaggerジェネレータはconnect.js(明示的ではありません)を使用するコードを生成します。

Expressは接続の最上位に構築されています。Expressから機能を使用する場合は、swaggerジェネレータで生成されたコードでconnectの代わりにexpressを簡単に使用できます。 にあるconst app = require('connect')();という行を見つけ、 'connect'を 'express'に置き換えます。

+0

swagger stubからnodejsサーバーのドキュメントが見つかりました。 JS関数はコードを見るだけではシグネチャが明確ではなく、タグを使用してコードを追跡することはさらに困難です。正しい推測をするために、スガッガーコードによって使用されているものについて、より多くのドキュメントを使用することができます。それはあなたの反応は非常に有用であると言いました。 – Sonny

関連する問題