diff --git a/CHANGELOG.md b/CHANGELOG.md index c77fc4f..52ca22c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Fixed +- Fixed EPERM Exception when datastore is at the root of a disk on Windows [#48](https://github.com/seald/nedb/issues/48) + ## [4.0.2] - 2023-05-05 ### Fixed - Fixed typo in documentation [#36](https://github.com/seald/nedb/pull/36) diff --git a/lib/persistence.js b/lib/persistence.js index 28e0e21..ba359a5 100755 --- a/lib/persistence.js +++ b/lib/persistence.js @@ -373,7 +373,11 @@ class Persistence { * @private */ static async ensureDirectoryExistsAsync (dir, mode = DEFAULT_DIR_MODE) { - await storage.mkdirAsync(dir, { recursive: true, mode }) + const parsedDir = path.parse(path.resolve(dir)) + // this is because on Windows mkdir throws a permission error when called on the root directory of a volume + if (process.platform !== 'win32' || parsedDir.dir !== parsedDir.root || parsedDir.base !== '') { + await storage.mkdirAsync(dir, { recursive: true, mode }) + } } } diff --git a/package-lock.json b/package-lock.json index e225b5e..8d034ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seald-io/nedb", - "version": "4.0.2", + "version": "4.0.3-1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seald-io/nedb", - "version": "4.0.2", + "version": "4.0.3-1", "license": "MIT", "dependencies": { "@seald-io/binary-search-tree": "^1.0.3", diff --git a/package.json b/package.json index de5c60f..db0c660 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seald-io/nedb", - "version": "4.0.2", + "version": "4.0.3-1", "files": [ "lib/**/*.js", "browser-version/**/*.js",