最近几天我用这个问题绞尽脑汁,但没有设法找到正确的方法。
我试图以Webstorm自动处理并启用自动完成的方式编写我的Node.js模块,但没有运气。
下面是我正在处理的模块的代码(内置Javascript Error对象的简单包装器):
/**
* @module some-module
*/
'use strict';
var util = require('util');
var httpErrors = {
/**
* HTTP status code 400
*
* @constructor
* @name BadRequest
* @memberOf errors
*/
400: { name: 'BadRequest', description: 'Invalid data was sent to the server' },
/**
* HTTP status code 403
*
* @constructor
* @name Forbidden
* @memberOf errors
*/
403: { name: 'Forbidden', description: 'You\'re not allowed to perform such action' }
};
/**
* @private
* @constructor
*
* @name HttpError
* @augments WError
*
* @param {Number} code
*
* @returns {HttpError}
*/
function HttpError (code) {
this.statusCode = code;
if (arguments.length < 2)
Error.call(this, httpErrors[this.statusCode].description);
else
Error.apply(this, Array.prototype.slice.call(arguments, 1));
return this;
}
util.inherits(HttpError, Error);
/**
* @private
* @constructor
*
* @name E
*
* @param {Number} code HTTP status code
*
* @returns {HttpError}
*/
function E (code) {
return HttpError.bind(this, code);
}
/**
* @constructor
* @name errors
*/
var errors = {};
Object.keys(httpErrors).forEach(function (errorCode) {
var error = httpErrors[errorCode];
errors[error.name] = new E(+errorCode);
});
module.exports = exports = errors;
如何使用它:
var errors = require('./lib');
var err = new errors.BadRequest();
console.log(err.statusCode); // should output 400
问题在于它动态创建了errors
个对象,因此Webstorm并没有“提取”对象。但是,我希望使用JSDoc明确声明module.exports
对象的属性,使其成为自动完成的属性。我这样做的方式由于某种原因不起作用。
如果您能就如何在这种情况下正确使用JSDoc给我一些建议,我将不胜感激。谢谢。 :)