diff --git a/helpers.js b/helpers.js index 999c378..a48d634 100644 --- a/helpers.js +++ b/helpers.js @@ -29,6 +29,7 @@ export async function readJSONFile(jsonFile) { let data = {}; try { + await fs.access(jsonFile, fs.constants.F_OK | fs.constants.R_OK); data = await fsExtra.readJson(jsonFile); } catch (e) { return { @@ -47,9 +48,10 @@ function getErrorHtml(message = '', errorMessage = '') { } export async function getBlockData(jsonFileName = 'default', {projectPath} = {jsonFileName: 'default'}) { - let data = await readJSONFile(path.join(projectPath, 'data', `${jsonFileName}.json`)); + const data = await readJSONFile(path.join(projectPath, 'data', `${jsonFileName}.json`)); + if (data.error) { - return data; + return {}; } return data; diff --git a/package.json b/package.json index 88fdd62..d014466 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "url": "https://axe-web.com/" }, "scripts": { - "info": "NODE_ENV=development BLOCK_NAME=buttons MODULE_PATH= node debug.js", - "dev": "NODE_ENV=development BLOCK_NAME=buttons MODULE_PATH= node server.js", - "build-platform": "NODE_ENV=development BLOCK_NAME=buttons MODULE_PATH= node ./build.js", + "info": "NODE_ENV=development BLOCK_NAME=colors MODULE_PATH= node debug.js", + "dev": "NODE_ENV=development BLOCK_NAME=colors MODULE_PATH= node server.js", + "build-platform": "NODE_ENV=development BLOCK_NAME=colors MODULE_PATH= node ./build.js", "dev-dev-tool": "NODE_ENV=development rollup --config rollup.config.js --watch", "build-dev-tool": "rollup --config rollup.config.js" }, diff --git a/server.js b/server.js index a7ef3d4..13f0a3e 100755 --- a/server.js +++ b/server.js @@ -46,7 +46,7 @@ const {isDev, modulesPath, projectPath, developmentBlockName} = getConfigs(); const blocksRegistry = isDev ? 'http://localhost:3020' : PRODUCTION_REGISTRY_URL; const DevToolToken = 'D9lgz0TvzXCnp0xnwVBL109DaAR6Puk6F7YewDhgmP8='; // Temporary token for development purposes. -const dataFiles = prepareListOfDataFiles(await fs.readdir(path.join(projectPath, 'data'))); +const dataFiles = await getDataFiles(projectPath); /** * State @@ -248,7 +248,7 @@ app.get('/publish', async (req, res) => { app.get('/data', async (req, res) => { let jsonDataFileName = req.query.name ? req.query.name : 'default'; - const dataFiles = prepareListOfDataFiles(await fs.readdir(path.join(projectPath, 'data'))); + const dataFiles = await getDataFiles(projectPath); const data = await getBlockData(jsonDataFileName, {projectPath}); let designPreviewFiles = []; @@ -528,3 +528,18 @@ async function triggerGlobalProjectFilesBuild(project) { return response.json(); } + +async function getDataFiles(projectPath) { + const dataFiles = []; + + try { + await fs.access(path.join(projectPath, 'data')); + + const files = prepareListOfDataFiles(await fs.readdir(path.join(projectPath, 'data'))); + dataFiles.push(...files); + } catch (e) { + console.log('Warning: data folder not found.'); + } + + return dataFiles; +}