JSDoc 3 在严格模式下解析具有相同名称的错误获取器/设置器
JSDoc 3 parse error getter/setter with the same name in strict mode
编译以下代码以使用 JSDoc 3 生成文档时出现错误。如果我删除第一行"用户严格";,那么它可以工作。这是 JSDoc 中的错误,还是我错过了什么?
法典:
"use strict";
var BaseClass = require("./BaseClass").BaseClass;
/**
* @class
* @extends BaseClass
*/
var MyClass = BaseClass.extend(
/** @lends MyClass.prototype */
{
/**
* Initializer.
* @public
*/
initialize:function () {
this._id = -1;
},
/**
* Property id
* @public
* @property {number} id
*/
get id() {
return this._id;
},
set id(id) {
this._id = id;
}
});
exports.MyClass = MyClass;
这是我看到的错误:
./jsdoc3/jsdoc -c ./conf.json
js: "/xxx/src/main.js", line 31: Property "id" already defined in this object literal.
js: }
js: ....^
org.mozilla.javascript.EvaluatorException: Compilation produced 1 syntax errors. (/xxx/src/main.js#1)
at org.mozilla.javascript.tools.ToolErrorReporter.runtimeError(ToolErrorReporter.java:144)
at org.mozilla.javascript.Parser.parse(Parser.java:596)
at org.mozilla.javascript.Parser.parse(Parser.java:505)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
at org.mozilla.javascript.gen.file__Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_node_modules_jsdoc_src_parser_js_18._c_anonymous_24(Unknown Source)
at org.mozilla.javascript.gen.file__Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_node_modules_jsdoc_src_parser_js_18.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.file__Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_node_modules_jsdoc_src_parser_js_18._c_anonymous_2(Unknown Source)
at org.mozilla.javascript.gen.file__Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_node_modules_jsdoc_src_parser_js_18.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1._c_main_3(Unknown Source)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1._c_script_0(Unknown Source)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.gen._Users_ytakeda_Projects_Supernova_snova_docs_submodules_jsdoc3_jsdoc_js_1.exec(Unknown Source)
at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:654)
at org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:552)
at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:507)
at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:499)
at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:215)
at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:134)
at org.mozilla.javascript.Context.call(Context.java:521)
at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:535)
at org.mozilla.javascript.tools.shell.Main.exec(Main.java:198)
at org.mozilla.javascript.tools.shell.Main.main(Main.java:174)
make: *** [docs] Error 1
如上所述,这种语法在 JavaScript 的严格模式下是合法的。我怀疑这是JSDoc使用的Mozilla Rhino版本中的解析器错误。
作为解决方法,您可以使用以下插件在 JSDoc 解析文件之前注释掉"使用严格"声明:
exports.handlers = {
beforeParse: function(e) {
e.source = e.source.replace(/['"]use strict['"]/g, "//'use strict'");
}
};
相关文章:
- AngularJS - 嵌套的ng-重复选择/选项,获取/设置所选值
- 如何获取/设置高图表 x轴步长
- locaction.reload(true) 会导致强制获取 - 设置 .src 时如何执行此操作
- Jquery:范围滑块:如何获取设置的范围值
- 通过 Javascript: 问题获取/设置 CSS 属性值
- 如何使用原型获取/设置 cookie.js
- 获取/设置在 Select2 倍数中单击的选项的值
- 获取/设置地图图像鼠标位置
- 如何获取/设置当前页面URL(适用于时空浏览器版本)
- 使用this from函数在作用域上获取/设置角度变量
- 获取/设置当前@关键帧百分比/更改关键帧
- 是否可以获取/设置现有路径的半径.圆
- jQuery UI菜单获取/设置活动UI菜单项
- 从javascript中获取/设置asp:文本框值
- 无法在 java 中从应用程序的服务器端获取/设置 cookie
- 获取/设置数值到localstorage
- Jquery获取/设置href协议
- 如何获取/设置表中的滚动位置
- 在面向对象JavaScript中获取/设置
- 获取/设置iframe内容的问题