web-dev-qa-db-ja.com

JSDocs:Node.jsエクスプレスルートの文書化

JSDocsでrouter.get呼び出しを文書化するのに苦労しています。ルーター呼び出し自体にドキュメントを追加しようとすると、ドキュメントをページに正しく表示できません。

/**
 * Health check
 * @memberof health
 */
router.get('/happy', function(req, res) {
    res.json({ "status" : "OK" });
});

それを解決するために、関数に名前を付けました。

router.get('/happy', happy);

/**
 * Health check
 * @memberof health
 */
function happy(req, res) {
    res.json({ "status" : "OK" });
}

これは機能しますが、私は本当に最初の方法を機能させる方法を見つけたいと思っています。最初の例を文書化する方法はありますか?使えるキーワードは?

19

私のコードでは次のようにします。

/** Express router providing user related routes
 * @module routers/users
 * @requires express
 */

/**
 * express module
 * @const
 */
const express = require('express');

/**
 * Express router to mount user related functions on.
 * @type {object}
 * @const
 * @namespace usersRouter
 */
const router = express.Router();

/**
 * Route serving login form.
 * @name get/login
 * @function
 * @memberof module:routers/users~usersRouter
 * @inner
 * @param {string} path - Express path
 * @param {callback} middleware - Express middleware.
 */
router.get('/login', function(req, res, next) {
  res.render('login', {title: 'Login', message: 'You must login'});
});

そして出力は: スクリーンショットUpdated Screenshot - Module: routers/usersNamespace - usersRouter

14
monatis

グーグルの少しから、実際にはテストしていません。

/**
 * Health check
 * @memberof health
 * @function
 * @name happy
 */
router.get('/happy', function(req, res) {
    res.json({ "status" : "OK" });
});
1
leo60228

「@module moduleName」をファイルの先頭に配置しない場合、jsdocは、ページ上の他のコメントを参照しません。これは、それらに親@moduleがないためです。

0
nathan lebreton