Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSDoc3不生成指向NodeJS中名称空间的超链接_Javascript_Node.js_Jsdoc3 - Fatal编程技术网

Javascript JSDoc3不生成指向NodeJS中名称空间的超链接

Javascript JSDoc3不生成指向NodeJS中名称空间的超链接,javascript,node.js,jsdoc3,Javascript,Node.js,Jsdoc3,我敢打赌这是一个愚蠢的问题,但从今天早上开始,我在我找到的任何文件中都找不到原因 我在使用JavaDoc方面很有经验,但不知何故,即使@link的语法相同,JSDoc3也不会生成相关元素的HREF。我已经尝试了所有可能的名称空间链接方法(显然也是错误的),但是没有一种方法会稍微改变结果。我希望通过编写{@link#myFunction}或至少{@link MyClass#myFunction}来接收链接,但这两者都没有创建超链接。以下是我测试过的代码: /** * See {@link myO

我敢打赌这是一个愚蠢的问题,但从今天早上开始,我在我找到的任何文件中都找不到原因

我在使用JavaDoc方面很有经验,但不知何故,即使
@link
的语法相同,JSDoc3也不会生成相关元素的HREF。我已经尝试了所有可能的名称空间链接方法(显然也是错误的),但是没有一种方法会稍微改变结果。我希望通过编写
{@link#myFunction}
或至少
{@link MyClass#myFunction}
来接收链接,但这两者都没有创建超链接。以下是我测试过的代码:

/**
 * See {@link myOtherFunction} and [MyClass's foo property]{@link MyClass#foo}.
 * Or look at {@link https://github.com GitHub}
 */
function myFunction(){};

/**
 * See {@link #myFunction} or maybe {@link #myFunction()}
 */
function myOtherFunction() {};
我使用
/node\u modules/.bin/jsdoc./*--configure./conf.json
生成它,我的默认配置文件是:

{
    "tags": {
        "allowUnknownTags": true
    },
    "source": {
        "includePattern": ".+\\.js(doc|x)?$",
        "excludePattern": "(^|\\/|\\\\)_"
    },
    "plugins": [],
    "templates": {
        "cleverLinks": true,
        "monospaceLinks": false,
        "default": {
            "outputSourceFiles": true
        }
    }
}
(如果我写
“cleverLinks”:false,
,这没有什么区别)

我的输出是这样的:

因此可以看出,URL是正确生成的,但名称空间不是

我非常困惑,因为我找不到一个描述,说明必须做些什么才能为我的名称空间生成HREF。另外,jsdoc说:

{}内联标记创建指向指定的namepath或URL的链接。使用{}标记时,还可以使用几种不同格式之一提供链接文本。如果不提供任何链接文本,JSDoc将使用namepath或URL作为链接文本

听起来不需要做任何事情来生成指向namepath的链接

它还将语法定义为:

{@linknamephorurl}
[链接文本]{@link namephorurl}
{@link namephorurl | link text}
{@link namephorurl链接文本(在第一个空格之后)}

我的名字路径也可以,因为webstorm可以直接解析它们


我到底错过了什么

致以最良好的祝愿,
Vegaaaa

我发现我的问题与将JSDoc与CommonJS(NodeJS)一起使用有关。经过几个小时的谷歌搜索和反复试验,我终于了解了它在NodeJS中的工作方式。我可能会玩弄
@internal
@instance
,但这解决了为什么JSDoc不想为我的NodeJS代码生成链接的问题

这是因为CommonJS的作用域与客户端JS的工作方式不同,这在NodeJS模块的定义中有一个原因。因此,我们需要告诉JSDoc如何通过为模块添加
@module
标记来解析变量,并通过解析其关系(如
{@link module:module_NAME~instanceName}
来引用模块的成员

下面是一个相应生成html的示例。希望这能帮助像我一样遇到同样问题的人


致以最良好的祝愿

织女星

/**
 * @module lib
 */

/**
 * @constructor
 */
var SomeClass = function () {

};

/**
 * Some doc...
 */
var moduleFunction = function () {

  /**
   * @type {number}
   */
  var innerVar = 0;

  /**
   * @type {number}
   */
  this.instanceVar = 0;

  /**
   * @memberOf module:lib~moduleFunction
   */
  function staticVar() {
    console.log(0)
  }
}

/**
 * Link to this module (identified by @module lib in the beginning): {@link module:lib} <br/>
 * Link to my constructor: {@link module:lib~SomeClass} <br/>
 * Link to a module function: {@link module:lib~moduleFunction} <br/>
 * Link to an instance variable of a module function: {@link module:lib~moduleFunction#instanceVar} <br/>
 * Link to a inner variable within a module function: {@link module:lib~moduleFunction~innerVar} <br/>
 * Link to a static variable within a module function: {@link module:lib~moduleFunction.staticVar} <br/>
 */
function documentedFunction(){}
/**
*@模块库
*/
/**
*@constructor
*/
var SomeClass=函数(){
};
/**
*一些医生。。。
*/
var moduleFunction=函数(){
/**
*@type{number}
*/
var=0;
/**
*@type{number}
*/
this.instanceVar=0;
/**
*@memberOf模块:lib~moduleFunction
*/
函数staticVar(){
console.log(0)
}
}
/**
*链接到此模块(开头由@module lib标识):{@Link module:lib}
*链接到我的构造函数:{@Link module:lib~SomeClass}
*链接到模块函数:{@Link module:lib~moduleFunction}
*链接到模块函数的实例变量:{@Link module:lib~moduleFunction#instanceVar}
*链接到模块函数内的内部变量:{@Link module:lib~moduleFunction~innerVar}
*链接到模块函数内的静态变量:{@Link module:lib~moduleFunction.staticVar}
*/ 函数documentedFunction(){}



我发现我的问题与将JSDoc与CommonJS(NodeJS)一起使用有关。经过几个小时的谷歌搜索和反复试验,我终于了解了它在NodeJS中的工作方式。我可能会玩弄
@internal
@instance
,但这解决了为什么JSDoc不想为我的NodeJS代码生成链接的问题

这是因为CommonJS的作用域与客户端JS的工作方式不同,这在NodeJS模块的定义中有一个原因。因此,我们需要告诉JSDoc如何通过为模块添加
@module
标记来解析变量,并通过解析其关系(如
{@link module:module_NAME~instanceName}
来引用模块的成员

下面是一个相应生成html的示例。希望这能帮助像我一样遇到同样问题的人


致以最良好的祝愿

织女星

/**
 * @module lib
 */

/**
 * @constructor
 */
var SomeClass = function () {

};

/**
 * Some doc...
 */
var moduleFunction = function () {

  /**
   * @type {number}
   */
  var innerVar = 0;

  /**
   * @type {number}
   */
  this.instanceVar = 0;

  /**
   * @memberOf module:lib~moduleFunction
   */
  function staticVar() {
    console.log(0)
  }
}

/**
 * Link to this module (identified by @module lib in the beginning): {@link module:lib} <br/>
 * Link to my constructor: {@link module:lib~SomeClass} <br/>
 * Link to a module function: {@link module:lib~moduleFunction} <br/>
 * Link to an instance variable of a module function: {@link module:lib~moduleFunction#instanceVar} <br/>
 * Link to a inner variable within a module function: {@link module:lib~moduleFunction~innerVar} <br/>
 * Link to a static variable within a module function: {@link module:lib~moduleFunction.staticVar} <br/>
 */
function documentedFunction(){}
/**
*@模块库
*/
/**
*@constructor
*/
var SomeClass=函数(){
};
/**
*一些医生。。。
*/
var moduleFunction=函数(){
/**
*@type{number}
*/
var=0;
/**
*@type{number}
*/
this.instanceVar=0;
/**
*@memberOf模块:lib~moduleFunction
*/
函数staticVar(){
console.log(0)
}
}
/**
*链接到此模块(开头由@module lib标识):{@Link module:lib}
*链接到我的构造函数:{@Link module:lib~SomeClass}
*链接到模块函数:{@Link module:lib~moduleFunction}
*链接到模块函数的实例变量:{@Link module:lib~moduleFunction#instanceVar}
*链接到模块函数内的内部变量:{@Link module:lib~moduleFunction~innerVar}
*链接到模块函数内的静态变量:{@Link module:lib~moduleFunction.staticVar}
*/ 函数documentedFunction(){}