When saving a new page and ending it with ## you get an error. The new page can't be found under All Pages, but the .md file (with all the text saved correctly) is in the repo folder in the project root. Afterwards if you try and create a new page with the same name it will say that the file already exists (which is true, it's just not listed under All Pages).
The saved file can be found under All Pages.
Create a new file and use this text:
<!-- TITLE: Test -->
<!-- SUBTITLE: A quick summary of Test -->
# Header
text
## sub header
More text and now I will end with two hash tags
##
This was on macOS 10.12.4 running [email protected].
This is from the error log:
2017-05-01T11:43:37.003Z - [31merror[39m: [SERVER] OperationalError: Entry test does not exist!
at fs.statAsync.then.catch (/wikijs-test/server/libs/entries.js:158:13)
at tryCatcher (/wikijs-test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/wikijs-test/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
2017-05-01T11:43:37.005Z - [31merror[39m: [SERVER] TypeError: Cannot read property 'title' of undefined
at self.fetchOriginal.catch.then.catch.then (/wikijs-test/server/libs/entries.js:258:28)
at tryCatcher (/wikijs-test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:582:21)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/wikijs-test/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/wikijs-test/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/wikijs-test/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:17:14)
If you need the entire error log I can send it on gitter.
note: this is true if there are any unlabeled headers: #, ##, ###, not just eof.
I've done some more testing and I've also noticed what @bitworm saw, as well as some more interesting behavior: if you edit any existing file, add in an empty header and then save it you will see the previous version of the page when going back to 'view mode'. Also, this appears in the error log after doing this:
2017-05-01T17:56:43.147Z - [31merror[39m: [SERVER] OperationalError: Entry dd does not exist!
at fs.statAsync.then.catch (/wikijs-test/server/libs/entries.js:158:13)
at tryCatcher (/wikijs-test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/wikijs-test/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
2017-05-01T17:56:43.149Z - [31merror[39m: [SERVER] TypeError: Cannot read property 'title' of undefined
at self.fetchOriginal.catch.then.catch.then (/wikijs-test/server/libs/entries.js:258:28)
at tryCatcher (/wikijs-test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:582:21)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/wikijs-test/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/wikijs-test/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/wikijs-test/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/wikijs-test/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/wikijs-test/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/wikijs-test/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/wikijs-test/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/wikijs-test/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/wikijs-test/node_modules/bluebird/js/release/async.js:17:14)
If you then go back into the editor, all the changes you made are still there. And if you add something to the empty header and save it, it is now saved correctly.
This is because the markdown-to-HTML rendering failed. So the view version is still the last HTML render that completed successfully while the edit version is the raw markdown.
There's indeed a bug with empty headers. I'll take a look at it.
Fixed for Beta 12 (a9ed499006ecb38df4f4f47f536c3f983bdb7266)
Cool! Thanks for the quick response :)