瀏覽代碼

Fix for empty page contents crashing parser

NGPixel 8 年之前
父節點
當前提交
956d3aca08
共有 3 個文件被更改,包括 21 次插入6 次删除
  1. 8 6
      fuse.js
  2. 9 0
      libs/entries.js
  3. 4 0
      libs/markdown.js

+ 8 - 6
fuse.js

@@ -9,7 +9,7 @@
 const _ = require('lodash')
 const Promise = require('bluebird')
 const colors = require('colors/safe')
-const fs = Promise.promisifyAll(require('fs'))
+const fs = Promise.promisifyAll(require('fs-extra'))
 const fsbx = require('fuse-box')
 const nodemon = require('nodemon')
 const path = require('path')
@@ -71,11 +71,13 @@ console.info(colors.white('└── ') + colors.green('Running global tasks...'
 let globalTasks = Promise.mapSeries([
   () => {
     console.info(colors.white('  └── ') + colors.green('Copy + Minify ACE modes to assets...'))
-    return fs.readdirAsync('./node_modules/brace/mode').then(modeList => {
-      return Promise.map(modeList, mdFile => {
-        console.info(colors.white('      mode-' + mdFile))
-        let result = uglify.minify(path.join('./node_modules/brace/mode', mdFile), { output: { 'max_line_len': 1000000 } })
-        return fs.writeFileAsync(path.join('./assets/js/ace', 'mode-' + mdFile), result.code)
+    return fs.ensureDirAsync('./assets/js/ace').then(() => {
+      return fs.readdirAsync('./node_modules/brace/mode').then(modeList => {
+        return Promise.map(modeList, mdFile => {
+          console.info(colors.white('      mode-' + mdFile))
+          let result = uglify.minify(path.join('./node_modules/brace/mode', mdFile), { output: { 'max_line_len': 1000000 } })
+          return fs.writeFileAsync(path.join('./assets/js/ace', 'mode-' + mdFile), result.code)
+        })
       })
     })
   }

+ 9 - 0
libs/entries.js

@@ -285,6 +285,9 @@ module.exports = {
       includeMarkdown: true,
       includeParentInfo: true,
       cache: true
+    }).catch(err => {
+      winston.error(err)
+      return err
     }).then((pageData) => {
       return {
         entryPath,
@@ -292,6 +295,9 @@ module.exports = {
         parent: pageData.parent || {},
         text: mark.removeMarkdown(pageData.markdown)
       }
+    }).catch(err => {
+      winston.error(err)
+      return err
     }).then((content) => {
       return db.Entry.findOneAndUpdate({
         _id: content.entryPath
@@ -304,6 +310,9 @@ module.exports = {
         new: true,
         upsert: true
       })
+    }).catch(err => {
+      winston.error(err)
+      return err
     })
   },
 

+ 4 - 0
libs/markdown.js

@@ -173,6 +173,10 @@ const parseContent = (content) => {
   let output = mkdown.render(content)
   let cr = cheerio.load(output)
 
+  if (cr.root().children().length < 1) {
+    return ''
+  }
+
   // -> Check for empty first element
 
   let firstElm = cr.root().children().first()[0]