GithubHelp home page GithubHelp logo

Comments (5)

1j01 avatar 1j01 commented on July 20, 2024

Here is the output on macOS:


> [email protected] 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.

from tracky-mouse.

1j01 avatar 1j01 commented on July 20, 2024

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.

from tracky-mouse.

1j01 avatar 1j01 commented on July 20, 2024

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 [email protected]: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated [email protected]: The package has been renamed to `open`
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: 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\[email protected]_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\[email protected]_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\[email protected]_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\[email protected]_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 [email protected]
npm ERR! gyp info using [email protected] | 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\\[email protected]_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\\[email protected]_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\\[email protected]_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\[email protected]_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.

from tracky-mouse.

1j01 avatar 1j01 commented on July 20, 2024

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/[email protected]_NKL07TXUFDJP_AO9lS3A/node_modules/serenade-driver",
			"link": true
		},
		"node_modules/.store/[email protected]_NKL07TXUFDJP_AO9lS3A": {},
		"node_modules/.store/[email protected]_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/[email protected]_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/[email protected]_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/[email protected]_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 [email protected]: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: The package has been renamed to `open`
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated @electron-forge/[email protected]: The electron-forge install command was removed in the v6.0.0-beta.68 release.
npm WARN deprecated [email protected]: 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 [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/notarize moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/packager moving forward. There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/rebuild moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/rebuild moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/rebuild moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/rebuild moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: Please use @electron/rebuild moving forward.  There is no API change, just a package name change
npm WARN deprecated [email protected]: 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/

> [email protected] 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: [email protected]
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:

  1. this requires reaching outside of the app directory to reference library code, and since I'm not using a bundler, this is not dynamic and is very unlikely to ever work when packaging the app:
    <script src="../../node_modules/tracky-mouse/tracky-mouse.js"></script>
  2. it fails to even load modules in electron-main.js with require, so Electron Forge is not bundling them.
  3. (this would have the downside of requiring installing heavy dependencies including native modules just to hack on the website, which would be inefficient and possibly prohibitive to contributors)

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.

from tracky-mouse.

1j01 avatar 1j01 commented on July 20, 2024

Ditched npm workspaces and got the app building.
In the end I needed:

  • The core library to be a sibling of the electron app, not a parent directory. This implies a monorepo setup.
  • Not to use npm workspaces, since otherwise modules are hosted to a root 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:

  • alternative package managers like yarn or pnpm (although they may also have issues with Electron Forge)
  • monorepo-specific tools like lerna, nx, etc.
  • bundling tools like webpack, rollup, etc.
  • or just tweaking npm scripts

from tracky-mouse.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.