grunt-jsdoc出錯記

jsDoc可以爲我們的js文件自動生成描述文檔,有了grunt後,使用grunt-jsdoc就可以方便的自動化的執行jsDoc功能。

將本地可以運行的grunt配置文件移植到linux服務器上,npm安裝依賴包後,執行grunt-jsdoc,卻出現了錯誤,提示:


從提示的信息根本無法發現出問題的所在,只好去查看grunt-jsdoc的grunt-jsdoc / tasks / jsdoc-plugin.js源碼,發現輸出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);
}
});
應該是執行的過程中觸發了“exit",任務退出,輸出了上面的log信息。
既然如此,只好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"
  },
改爲:

"dependencies": {
    "lodash": "~2.4.1",
    "jsdoc": "~3.1.1",
    "ink-docstrap": "~0.2.0-0"
  },


然後重新 npm install,安裝3.1.1版本的jsdoc,安裝完以後找到之前說的那個jsdoc文件,授予可以執行權限,OK,再次執行,終於成功了!!!


總結一下吧,這個過程主要有2個問題:
1.jsdoc3.2.2版本本身有問題,會出現解析錯誤,換成3.1.1版本;
2.jsdoc文件要有可執行權限。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章