Fix crash on first launch (#78, #90) (#93)

This commit is contained in:
Felix Häusler 2018-03-29 11:45:08 +02:00 committed by 冉四夕
parent 05ddf6374c
commit 582636721e
5 changed files with 48 additions and 14 deletions

View File

@ -12,6 +12,7 @@
- fix: #81
- fix: #55
- fix: #63
- fix: crash on first launch due missing directory (#78, #90, #93)
### 0.8.12

44
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "marktext",
"version": "0.7.17",
"version": "0.8.12",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -6347,6 +6347,19 @@
"ms": "2.0.0"
}
},
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "2.4.0",
"klaw": "1.3.1",
"path-is-absolute": "1.0.1",
"rimraf": "2.6.2"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
@ -8275,16 +8288,23 @@
"integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0="
},
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
"integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "2.4.0",
"klaw": "1.3.1",
"path-is-absolute": "1.0.1",
"rimraf": "2.6.2"
"jsonfile": "4.0.0",
"universalify": "0.1.1"
},
"dependencies": {
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"requires": {
"graceful-fs": "4.1.11"
}
}
}
},
"fs-extra-p": {
@ -8776,8 +8796,7 @@
"jsbn": {
"version": "0.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"json-schema": {
"version": "0.2.3",
@ -22479,8 +22498,7 @@
"universalify": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
"dev": true
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
},
"unpipe": {
"version": "1.0.0",

View File

@ -83,6 +83,7 @@
"electron-window-state": "^4.1.1",
"element-ui": "^2.1.0",
"file-icons-js": "^1.0.3",
"fs-extra": "^5.0.0",
"js-beautify": "^1.7.5",
"mousetrap": "^1.6.1",
"npm": "^5.7.1",

View File

@ -2,7 +2,7 @@ import fs from 'fs'
import path from 'path'
import { ipcMain, BrowserWindow } from 'electron'
import { windows } from './createWindow'
import { getPath, log } from './utils'
import { getPath, log, mkdir } from './utils'
const FILE_NAME = 'preference.md'
const staticPath = path.join(__static, FILE_NAME)
@ -15,6 +15,7 @@ class Preference {
this.userDataPath = userDataPath
if (!fs.existsSync(userDataPath)) {
mkdir(getPath('userData'))
const content = fs.readFileSync(staticPath, 'utf-8')
fs.writeFileSync(userDataPath, content, 'utf-8')
}

View File

@ -1,5 +1,6 @@
import fs from 'fs'
import path from 'path'
import fse from 'fs-extra'
import { app, Menu } from 'electron'
import { EXTENSIONS } from './config'
@ -16,6 +17,7 @@ export const log = data => {
if (typeof data !== 'string') data = (data.stack || data).toString()
const LOG_DATA_PATH = path.join(getPath('userData'), 'error.log')
const LOG_TIME = new Date().toLocaleString()
mkdir(getPath('userData'))
fs.appendFileSync(LOG_DATA_PATH, `\n${LOG_TIME}\n${data}\n`)
}
@ -42,3 +44,14 @@ export const isFile = filepath => {
export const isMarkdownFile = filepath => {
return isFile(filepath) && hasMarkdownExtension(filepath)
}
// creates a directory if it doesn't already exist.
export const mkdir = function (dirPath) {
try {
fse.ensureDirSync(dirPath)
} catch (e) {
if (e.code !== 'EEXIST') {
throw e
}
}
}