Closed 1j01 closed 2 months ago
Here is the output on macOS:
> tracky-mouse-electron@1.0.0 make
> electron-forge make
✔ Checking your system
✔ Resolving Forge Config
We need to package your application before we can make it
⠋ Preparing to Package Application for arch: x64
An unhandled rejection has occurred inside Forge:
Error: ENAMETOOLONG: name too long, scandir '/var/folders/5c/blzb_wsx2cvdglh72tkyn8800000gn/T/electron-packager/darwin-x64/Tracky Mouse-darwin-x64/Electron.app/Contents/Resources/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/tracky-mouse/app/node_modules/serenade-driver/build/Release/obj.target/serenade-driver'
Electron Forge was terminated. Location:
{}
It's actually not quite what I remembered. But I still suspect the same underlying cause.
I tried adding as a workaround in forge.config.js:
ignore: [
// This project, which is a subfolder of the main project,
// the main project (core library) being a dependency of this project
"tracky-mouse-electron",
but that didn't help. Trying restructuring the repo next.
I restructured the project as a monorepo, and this does help, but using npm workspaces creates its own problems.
I'm now running up against:
With npm workspaces, dependencies are now hoisted by npm, and Electron Forge doesn't find the dependencies.
I tried adding an .npmrc
with:
# install-strategy is needed for the electron app to be packaged correctly.
# If the dependencies are hoisted, electron-forge will fail to find them.
install-strategy=linked
But this is buggy, as noted in the output:
2024-04-18 02:08:24 ⌚ in ~/Projects/tracky-mouse
± |main ↑3 {3} ?:1 ✗| → npm i
npm WARN reify The "linked" install strategy is EXPERIMENTAL and may contain bugs.
npm WARN deprecated gar@1.0.4: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated opn@6.0.0: The package has been renamed to `open`
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated @electron-forge/installer-rpm@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-base@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-exe@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-deb@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-zip@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated @electron-forge/installer-linux@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-darwin@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated @electron-forge/installer-dmg@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm ERR! code 1
npm ERR! path C:\Users\Isaiah\Projects\tracky-mouse\node_modules\.store\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\node_modules\serenade-driver
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node-gyp rebuild
npm ERR! driver.cpp
npm ERR! C:\Users\Isaiah\Projects\tracky-mouse\node_modules\.store\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\node_modules\serenade-driver\src\driver.cpp(1,1): error C1083: Cannot open compiler generated file: 'C:\Users\Isaiah\Projects\tracky-mouse\node_modules\.store\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\node_modules\serenade-driver\build\Release\obj\serenade-driver\src\driver.obj': Permission denied [C:\Users\Isaiah\Projects\tracky-mouse\node_modules\.store\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\node_modules\serenade-driver\build\serenade-driver.vcxproj]
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@10.0.1
npm ERR! gyp info using node@21.5.0 | win32 | x64
npm ERR! gyp info find Python using Python version 3.12.1 found at "C:\Users\Isaiah\AppData\Local\Programs\Python\Python312\python.exe"
npm ERR! gyp info find VS using VS2022 (17.9.34701.34) found at:
npm ERR! gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
npm ERR! gyp info find VS run with --verbose for detailed information
npm ERR! gyp info spawn C:\Users\Isaiah\AppData\Local\Programs\Python\Python312\python.exe
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args 'C:\\Users\\Isaiah\\AppData\\Roaming\\nvm\\v21.5.0\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'msvs',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'C:\\Users\\Isaiah\\Projects\\tracky-mouse\\node_modules\\.store\\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\\node_modules\\serenade-driver\\build\\config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'C:\\Users\\Isaiah\\AppData\\Roaming\\nvm\\v21.5.0\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'C:\\Users\\Isaiah\\AppData\\Local\\node-gyp\\Cache\\21.5.0\\include\\node\\common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=C:\\Users\\Isaiah\\AppData\\Local\\node-gyp\\Cache\\21.5.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=C:\\Users\\Isaiah\\AppData\\Roaming\\nvm\\v21.5.0\\node_modules\\npm\\node_modules\\node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=C:\\\\Users\\\\Isaiah\\\\AppData\\\\Local\\\\node-gyp\\\\Cache\\\\21.5.0\\\\<(target_arch)\\\\node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=C:\\Users\\Isaiah\\Projects\\tracky-mouse\\node_modules\\.store\\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\\node_modules\\serenade-driver',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'C:\\Users\\Isaiah\\Projects\\tracky-mouse\\node_modules\\.store\\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\\node_modules\\serenade-driver\\build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args 'build\\binding.sln',
npm ERR! gyp info spawn args '/clp:Verbosity=minimal',
npm ERR! gyp info spawn args '/nologo',
npm ERR! gyp info spawn args '/p:Configuration=Release;Platform=x64'
npm ERR! gyp info spawn args ]
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe` failed with exit code: 1
npm ERR! gyp ERR! stack at ChildProcess.<anonymous> (C:\Users\Isaiah\AppData\Roaming\nvm\v21.5.0\node_modules\npm\node_modules\node-gyp\lib\build.js:209:23)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:519:28)
npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12)
npm ERR! gyp ERR! System Windows_NT 10.0.22631
npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Isaiah\\AppData\\Roaming\\nvm\\v21.5.0\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd C:\Users\Isaiah\Projects\tracky-mouse\node_modules\.store\serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A\node_modules\serenade-driver
npm ERR! gyp ERR! node -v v21.5.0
npm ERR! gyp ERR! node-gyp -v v10.0.1
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in: C:\Users\Isaiah\AppData\Local\npm-cache\_logs\2024-04-18T06_10_19_850Z-debug-0.log
2024-04-18 02:10:29 ⌚ in ~/Projects/tracky-mouse
± |main ↑3 {3} ?:1 ✗| → cd website/
2024-04-18 02:11:47 ⌚ in ~/Projects/tracky-mouse/website
± |main ↑3 {3} ?:1 ✗| → npm i
npm WARN reify The "linked" install strategy is EXPERIMENTAL and may contain bugs.
npm ERR! this.idealTree.children.get is not a function
npm ERR! A complete log of this run can be found in: C:\Users\Isaiah\AppData\Local\npm-cache\_logs\2024-04-18T06_11_49_837Z-debug-0.log
2024-04-18 02:11:50 ⌚ in ~/Projects/tracky-mouse/website
± |main ↑3 {3} ?:1 ✗| → cd ../desktop-app/
2024-04-18 02:15:24 ⌚ in ~/Projects/tracky-mouse/desktop-app
± |main ↑3 {3} ?:1 ✗| → npm i
npm WARN reify The "linked" install strategy is EXPERIMENTAL and may contain bugs.
npm ERR! this.idealTree.children.get is not a function
npm ERR! A complete log of this run can be found in: C:\Users\Isaiah\AppData\Local\npm-cache\_logs\2024-04-18T06_15_26_005Z-debug-0.log
I may need to ditch npm workspaces, and just use separate packages that aren't "workspaces", in order to have separate node_modules
.
Or I may be able to delete the package locks other than the root one, and build the app if Electron Forge actually supports looking at one package.json but not nested ones, and that's the only issue, but this will have the downside of requiring installing heavy dependencies including native modules just to hack on the website, which is inefficient and may be prohibitive to contributors.
I could also try the install-strategy=nested
(formerly --legacy-bundling
), which may be inefficient but perhaps not on the order of having to install electron plus a native node module when not needed.
I tried adding install-strategy=nested
to .npmrc
and deleting all the package-lock.json
files and reinstalling, but it was very broken, showing leftovers from install-strategy=linked
(note the .store
):
"desktop-app/node_modules/serenade-driver": {
"resolved": "node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver",
"link": true
},
"node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A": {},
"node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver": {
"version": "1.1.13",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"bindings": "^1.5.0",
"node-addon-api": "^3.1.0",
"windows-shortcuts": "^0.1.6"
}
},
"node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver/node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dependencies": {
"file-uri-to-path": "1.0.0"
}
},
"node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver/node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
},
"node_modules/.store/serenade-driver@1.1.13-O_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver/node_modules/windows-shortcuts": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/windows-shortcuts/-/windows-shortcuts-0.1.6.tgz",
"integrity": "sha512-kjkb3Hmmmg7jwnOb+29AOmoEEA1L/JeLsMOYovpLxYpuc+fN0R+pr8sMwep3JFhUZloxyw1XTzq8n3HugXkqBA=="
},
and running npm i
inside desktop-app/
didn't do anything.
Then I tried deleting all the package locks again along with the node_modules
folders and trying again...
2024-04-18 11:51:36 ⌚ in ~/Projects/tracky-mouse
± |main ↑4 {3} ✓| → npm i
npm WARN deprecated gar@1.0.4: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated opn@6.0.0: The package has been renamed to `open`
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated @electron-forge/installer-rpm@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-deb@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-exe@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-zip@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-base@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated @electron-forge/installer-linux@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-darwin@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-darwin@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/installer-linux@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated @electron-forge/installer-dmg@6.0.0-beta.65: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-notarize@1.2.2: Please use @electron/notarize moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-packager@15.5.2: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN deprecated electron-rebuild@3.2.9: Please use @electron/rebuild moving forward. There is no API change, just a package name change
npm WARN cleanup Failed to remove some directories [
npm WARN cleanup [
npm WARN cleanup 'C:\\Users\\Isaiah\\Projects\\tracky-mouse\\desktop-app\\node_modules\\@electron-forge\\maker-deb\\node_modules\\electron-installer-debian\\node_modules\\electron-installer-common',
npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\maker-deb\node_modules\electron-installer-debian\node_modules\electron-installer-common\node_modules\asar\node_modules\@types\glob\node_modules'] {
npm WARN cleanup errno: -4048,
npm WARN cleanup code: 'EPERM',
npm WARN cleanup syscall: 'rmdir',
npm WARN cleanup path: 'C:\\Users\\Isaiah\\Projects\\tracky-mouse\\desktop-app\\node_modules\\@electron-forge\\maker-deb\\node_modules\\electron-installer-debian\\node_modules\\electron-installer-common\\node_modules\\asar\\node_modules\\@types\\glob\\node_modules'
npm WARN cleanup }
npm WARN cleanup ]
npm WARN cleanup ]
added 4469 packages, and audited 4473 packages in 53s
110 packages are looking for funding
run `npm fund` for details
23 vulnerabilities (16 moderate, 7 high)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
Weird that's trying to remove a directory during a clean install, but I've been having these sort of permission errors come and go for a while now. Trying to run the app...
2024-04-18 11:53:26 ⌚ in ~/Projects/tracky-mouse
± |main ↑4 {3} U:1 ✗| → npm start -w desktop-app/
> tracky-mouse-electron@1.0.0 start
> electron-forge start
An unhandled exception has occurred inside Forge:
Cannot find module 'ini'
Require stack:
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\node_modules\global-modules\node_modules\global-prefix\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\node_modules\global-modules\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\init-scripts\find-template.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\init.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\dist\util\check-system.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\dist\electron-forge.js
Error: Cannot find module 'ini'
Require stack:
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\node_modules\global-modules\node_modules\global-prefix\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\node_modules\global-modules\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\init-scripts\find-template.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\init.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\dist\api\index.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\dist\util\check-system.js
- C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\dist\electron-forge.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
at Module._load (node:internal/modules/cjs/loader:984:27)
at Module.require (node:internal/modules/cjs/loader:1234:19)
at require (node:internal/modules/helpers:176:18)
at Object.<anonymous> (C:\Users\Isaiah\Projects\tracky-mouse\desktop-app\node_modules\@electron-forge\cli\node_modules\@electron-forge\core\node_modules\resolve-package\node_modules\get-installed-path\node_modules\global-modules\node_modules\global-prefix\index.js:14:11)
at Module._compile (node:internal/modules/cjs/loader:1375:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1434:10)
at Module.load (node:internal/modules/cjs/loader:1206:32)
at Module._load (node:internal/modules/cjs/loader:1022:12)
at Module.require (node:internal/modules/cjs/loader:1234:19)
npm ERR! Lifecycle script `start` failed with error:
npm ERR! Error: command failed
npm ERR! in workspace: tracky-mouse-electron@1.0.0
npm ERR! at location: C:\Users\Isaiah\Projects\tracky-mouse\desktop-app
I then tried using the default hoisted
install strategy, but deleting the package-lock.json
files other than the root one, following this advice, but:
<script src="../../node_modules/tracky-mouse/tracky-mouse.js"></script>
electron-main.js
with require
, so Electron Forge is not bundling them.So I'm going to have to ditch npm workspaces, and maybe switch package managers in the future to get a nicer monorepo workflow... that actually works.
Ditched npm workspaces and got the app building. In the end I needed:
node_modules
for sharing, and Electron Forge doesn't handle this.I replaced the--workspace
arguments with some npm scripts to maintain the ergonomics of running everything from one folder, which I would have missed.
I could explore other options in the future for improving the developer experience around the monorepo setup, like:
npm run make
gives this error on Windows:on macOS, the error is clearer, because it shows the path it created contains a cycle of the two directories, repeating over and over.
The electron app depends on
"tracky-mouse": "file:.."
. It's not a cyclic dependency; thetracky-mouse
package doesn't depend on thetracky-mouse-electron
package, but thetracky-mouse
folder does contain thetracky-mouse-electron
folder, so it gets into a loop of trying to include it.I might need to separate the products into sibling folders, at which point there wouldn't be a package.json at the root of the repo... It might be time that I need to learn about monorepos, since this project contains two products (core library and desktop app), with a third planned (a browser extension).
There may be simple workaround, though.