From 9fd04a6ec846f6893b6fc05b06a49196f47f4d9b Mon Sep 17 00:00:00 2001 From: Brendan Date: Mon, 2 Jan 2017 10:13:53 +0100 Subject: [PATCH] safer store with try catch --- lib/app/store.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/app/store.js b/lib/app/store.js index 3cdf3ccc84..7722a7fd15 100644 --- a/lib/app/store.js +++ b/lib/app/store.js @@ -2,7 +2,16 @@ import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) -const files = require.context('~store', false, /^\.\/.*\.js$/) +let files +let filenames = [] + +try { + files = require.context('~store', false, /^\.\/.*\.js$/) + filenames = files.keys() +} catch (e) { + console.warn('Nuxt.js store:', e.message) +} + function getModule (filename) { let file = files(filename) return file.default @@ -14,7 +23,7 @@ let store let storeData = {} // Check if store/index.js returns a vuex store -if (files.keys().includes('./index.js')) { +if (filenames.includes('./index.js')) { let mainModule = getModule('./index.js') if (mainModule.commit) { store = mainModule @@ -26,7 +35,7 @@ if (files.keys().includes('./index.js')) { // Generate the store if there is no store yet if (store == null) { storeData.modules = storeData.modules || {} - for (let filename of files.keys()) { + for (let filename of filenames) { let name = filename.replace(/^\.\//, '').replace(/\.js$/, '') if (name === 'index') continue storeData.modules[name] = getModule(filename)