jsDoc可以为我们的js文件自动生成描述文档,有了grunt后,使用grunt-jsdoc就可以方便的自动化的执行jsDoc功能。
将本地可以运行的grunt配置文件移植到linux服务器上,npm安装依赖包后,执行grunt-jsdoc,却出现了错误,提示:
从提示的信息根本无法发现出问题的所在,只好去查看grunt-jsdoc的grunt-jsdoc / tasks / jsdoc-plugin.js源码,发现输出log的地方是:
应该是执行的过程中触发了“exit",任务退出,输出了上面的log信息。child . on ( 'exit' , function ( code ){if ( code === 0 ){grunt . log . write ( 'Documentation generated to ' + path . resolve ( options . destination ));done ( true );} else {grunt . log . error ( 'jsdoc terminated' );grunt . fail . warn ( 'jsdoc failure' , errorCode . task );}});
既然如此,只好google了,找到了这个地址:https://github.com/krampstudio/grunt-jsdoc/issues/26,里面提到了如下内容:那么是不是我的jsdoc也是有这个问题呢?于是试试看:
竟然权限不够,不会吧:
啊偶,竟然没有执行权限(x),好吧,chomod 755 jsdoc,授权后:
既然有了权限,那应该没有问题了,再试试吧。
啊啊,还有问题,应该是jsdoc.js文件中解析"<a href..."时,出错了啊,怎么会这样啊。继续看看jsdoc.js的源码,看看那出的问题。
try
{
main
();
env
.
run
.
finish
=
new
Date
();
process
.
exit
(
0
);
}
catch
(
e
)
{
env
.
run
.
finish
=
new
Date
();
if
(
e
.
rhinoException
!=
null
)
{
e
.
rhinoException
.
printStackTrace
();
process
.
exit
(
1
);
}
else
{
throw
e
;
}
}
哎嗨,是抛出了异常,应该是解析出了问题,源码太多,一时半会也看不完,在Google,找到了这个地址:https://github.com/openlayers/ol3/issues/405,感觉好像是目前用jsdoc3.2.2有问题,可以换成3.1.1的,好吧,都这样了,就试试3.1.1的吧。修改grunt-jsdoc的文件package.json文件:
改为:"dependencies" : {"lodash" : "~2.4.1" ,"jsdoc" : "~3.2.2" ,"ink-docstrap" : "~0.2.0-0"},
然后重新 npm install,安装3.1.1版本的jsdoc,安装完以后找到之前说的那个jsdoc文件,授予可以执行权限,OK,再次执行,终于成功了!!!"dependencies" : {"lodash" : "~2.4.1" ,"jsdoc" : "~3.1.1" ,"ink-docstrap" : "~0.2.0-0"},
总结一下吧,这个过程主要有2个问题:
1.jsdoc3.2.2版本本身有问题,会出现解析错误,换成3.1.1版本;
2.jsdoc文件要有可执行权限。