From 24d9b70c4c5a511bea113fd6346dfe7a3e6df0d1 Mon Sep 17 00:00:00 2001 From: sam detweiler Date: Wed, 18 Dec 2024 10:37:51 -0600 Subject: [PATCH] fix access denied fault error writing js/positions.js (#3652) if the MagicMirror js folder is not writable (synology nas created by different user than docker container) there is an uncaught throw ``` [ERROR] EACCES: permission denied, open 'js/positions.js' ``` add try/catch, output new message, console.error ```text unable to write js/positions.js with the discovered module positions make the MagicMirror/js folder writeable by the user starting MagicMirror ``` MM will start, but no modules will show, as no positions were discovered this file is used to pass the list from the server side to the browser side fixes #3651 --- CHANGELOG.md | 1 + js/utils.js | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bd35f0e..c19de0a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ _This release is scheduled to be released on 2025-01-01._ - [core] Run code style checks in workflow only once (#3648) - [core] Fix animations export #3644 only on server side (#3649) - [core] Use project URL in fallback config. +- [core] fix Access Denied crash writing js/positions.js (on synology nas) #3651. new message, MM starts, but no modules showing ### Removed diff --git a/js/utils.js b/js/utils.js index 9536a1b0..d4b90223 100644 --- a/js/utils.js +++ b/js/utils.js @@ -65,7 +65,12 @@ module.exports = { modulePositions.push(positionName); } }); - fs.writeFileSync(discoveredPositionsJSFilename, `const modulePositions=${JSON.stringify(modulePositions)}`); + try { + fs.writeFileSync(discoveredPositionsJSFilename, `const modulePositions=${JSON.stringify(modulePositions)}`); + } + catch (error) { + console.error("unable to write js/positions.js with the discovered module positions\nmake the MagicMirror/js folder writeable by the user starting MagicMirror"); + } } // return the list to the caller return modulePositions;