JSDocs: документирование экспресс-маршрутов Node.js
Я борюсь за документирование вызовов router.get с помощью JSDocs. Я не могу правильно отобразить документацию на странице, если я попытаюсь добавить ее к самому вызову маршрутизатора.
/**
* 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" });
}
Это работает, но мне бы очень хотелось найти способ заставить первый метод работать. Есть ли способ документировать первый пример? Ключевое слово, которое я могу использовать?
Ответы
Ответ 1
Я делаю следующее в моем коде.
/** 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'});
});
И вывод: Скриншот
![Namespace - usersRouter]()
Ответ 2
От немного Googling, на самом деле не тестировались.
/**
* Health check
* @memberof health
* @function
* @name happy
*/
router.get('/happy', function(req, res) {
res.json({ "status" : "OK" });
});
Ответ 3
Если вы не поместите "@module moduleName" в верхней части файла, jsdoc не будет ссылаться на другие комментарии на странице, потому что у них нет родительского @module.