Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

start does not work with yarn workspaces #1377

Closed
3 tasks done
kamontat opened this issue Dec 31, 2019 · 9 comments · Fixed by #1450
Closed
3 tasks done

start does not work with yarn workspaces #1377

kamontat opened this issue Dec 31, 2019 · 9 comments · Fixed by #1450
Labels
bug plugin/webpack Issues or pull requests related to first-party webpack plugins/templates

Comments

@kamontat
Copy link
Contributor

kamontat commented Dec 31, 2019

Preflight Checklist

  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project follows, as appropriate.
  • I have searched the issue tracker for a bug that matches the one I want to file, without success.

Issue Details

  • Electron Forge Version:
    • 6.0.0-beta.47
  • Electron Version:
    • v7.1.7
  • Operating System:
    • macOS 10.14.6 (18G95)
  • Last Known Working Electron Forge version::
    • none

Expected Behavior

No error

Actual Behavior

CleanShot 2020-01-01 at 02 31 01

To Reproduce

Additional Information

Error log:

@kk/app: $ electron-forge start
@kk/app: WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
@kk/app: 2019-12-31T19:33:52.010Z electron-forge:async-ora Process Started: Checking your system
@kk/app: 2019-12-31T19:33:52.011Z electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this
@kk/app: 2019-12-31T19:33:52.269Z electron-forge:async-ora Process Succeeded: Checking your system -- after 259ms
@kk/app: WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
@kk/app: 2019-12-31T19:33:52.601Z electron-forge:async-ora Process Started: Locating Application
@kk/app: 2019-12-31T19:33:52.602Z electron-forge:project-resolver searching for project in: /Users/kchantrachir/Desktop/Personal/KingKnight/packages/app
@kk/app: 2019-12-31T19:33:52.603Z electron-forge:project-resolver electron-forge compatible package.json found in /Users/kchantrachir/Desktop/Personal/KingKnight/packages/app/package.json
@kk/app: 2019-12-31T19:33:52.603Z electron-forge:async-ora Process Succeeded: Locating Application -- after 2ms
@kk/app: 2019-12-31T19:33:52.606Z electron-forge:require-search searching [
@kk/app:   '@electron-forge/plugin-webpack',
@kk/app:   '/Users/kchantrachir/Desktop/Personal/KingKnight/packages/app/@electron-forge/plugin-webpack',
@kk/app:   '/Users/kchantrachir/Desktop/Personal/KingKnight/packages/app/node_modules/@electron-forge/plugin-webpack'
@kk/app: ] relative to /Users/kchantrachir/Desktop/Personal/KingKnight/packages/app
@kk/app: 2019-12-31T19:33:52.607Z electron-forge:require-search testing @electron-forge/plugin-webpack
@kk/app: 2019-12-31T19:33:52.848Z electron-forge:plugin:webpack hooking process events
@kk/app: 2019-12-31T19:33:52.850Z electron-forge:async-ora Process Started: Preparing native dependencies
@kk/app: 2019-12-31T19:33:52.856Z electron-forge:async-ora Process Succeeded: Preparing native dependencies -- after 6ms
@kk/app: 2019-12-31T19:33:52.856Z electron-forge:plugins plugin: "webpack" has taken control of the start command
@kk/app: 2019-12-31T19:33:52.861Z electron-forge:async-ora Process Started: Compiling Main Process Code
@kk/app: Starting type checking service...
@kk/app: Using 1 worker with 2048MB memory limit
@kk/app: 2019-12-31T19:33:56.618Z electron-forge:async-ora Process Succeeded: Compiling Main Process Code -- after 3.8s
@kk/app: 2019-12-31T19:33:56.618Z electron-forge:async-ora Process Started: Launch Dev Servers
@kk/app: 2019-12-31T19:33:56.635Z electron-forge:async-ora Process Succeeded: Launch Dev Servers -- after 17ms
@kk/app: 2019-12-31T19:33:56.635Z electron-forge:async-ora Process Started: Compiling Preload Scripts
@kk/app: 2019-12-31T19:33:56.635Z electron-forge:async-ora Process Succeeded: Compiling Preload Scripts -- after 0ms
@kk/app:
@kk/app: An unhandled rejection has occurred inside Forge:
@kk/app: Error: Cannot find module '/Users/kchantrachir/Desktop/Personal/KingKnight/packages/app/node_modules/electron'
@kk/app: Require stack:
@kk/app: - /Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/dist/api/start.js
@kk/app: - /Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/dist/api/index.js
@kk/app: - /Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/cli/dist/electron-forge-start.js
@kk/app:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15)
@kk/app:     at Function.Module._load (internal/modules/cjs/loader.js:690:27)
@kk/app:     at Module.require (internal/modules/cjs/loader.js:852:19)
@kk/app:     at require (internal/modules/cjs/helpers.js:74:18)
@kk/app:     at forgeSpawn (/Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/src/api/start.ts:81:26)
@kk/app:     at processTicksAndRejections (internal/process/task_queues.js:93:5)
@kk/app:     at forgeSpawnWrapper (/Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/src/api/start.ts:121:21)
@kk/app:     at /Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/cli/src/electron-forge-start.ts:59:19 {
@kk/app:   code: 'MODULE_NOT_FOUND',
@kk/app:   requireStack: [
@kk/app:     '/Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/dist/api/start.js',
@kk/app:     '/Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/core/dist/api/index.js',
@kk/app:     '/Users/kchantrachir/Desktop/Personal/KingKnight/node_modules/@electron-forge/cli/dist/electron-forge-start.js'
@kk/app:   ]
@kk/app: }
@kk/app:
@kk/app: Electron Forge was terminated. Location:
@kk/app: {}
@kk/app: 2019-12-31T19:33:56.644Z electron-forge:plugin:webpack handling process exit with: { cleanup: true }
@kk/app: 2019-12-31T19:33:56.644Z electron-forge:plugin:webpack cleaning webpack watcher
@kk/app: 2019-12-31T19:33:56.645Z electron-forge:plugin:webpack cleaning http server
@kk/app: 2019-12-31T19:33:56.645Z electron-forge:plugin:webpack stopping logger

This is a code that might relate to this issue

https://github.com/electron-userland/electron-forge/blob/9b8a2a6acbccf280472b0a378451d6520322a542/packages/api/core/src/api/start.ts#L81

@kamontat kamontat added the bug label Dec 31, 2019
@kamontat
Copy link
Contributor Author

refer: #869

@malept malept added the plugin/webpack Issues or pull requests related to first-party webpack plugins/templates label Jan 23, 2020
@malept malept changed the title Refer to yarn workspace. It still fail in my case anyway start does not work with yarn workspaces Jan 29, 2020
@Eli-Black-Work Eli-Black-Work mentioned this issue Mar 4, 2021
22 tasks
@Eli-Black-Work
Copy link

Just wanted to say that I've tested this in my project with 6.0.0-beta.57 and everything works great, thanks! 🙂

@shot-codes
Copy link

Hey @Bosch-Eli-Black, I'm trying to setup a monorepo with a single electron package. I am encountering the same issues faced in #869. I'm running the same version of electron forge but no luck. Any advice, or a minimal repo that demonstrates yarn workspaces working with electron forge? Any help would be greatly appreciated

@Eli-Black-Work
Copy link

Hi @TheFoolishPupil,

Sure, would be happy to try to help 🙂

Our directory structure looks like this:

/package.json
/.yarnrc.yml
/app/package.json
/src/package.json

Our .yarnrc.yml:

enableScripts: true

plugins:
  - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.js
    spec: "@yarnpkg/plugin-interactive-tools"

yarnPath: .yarn/releases/yarn-2.4.1.cjs
                       
nodeLinker: node-modules

# We're using Yarn workspaces, which means that by default, all of our modules are hoisted into a node_modules folder that's in the root folder.
# This breaks electron, so we force each folder (app/, web/, and src/) to have their own node_modules folders.
# https://github.com/electron-userland/electron-forge/issues/869
nmHoistingLimits: workspaces

Our root package.json:

{
  "name": "...",
  "version": "1.0.0",
  "description": "...",
  "author": "...",
  "license": "...",
  "private": true,
  "scripts": {
    "app-run-dev": "yarn workspace example-app run run",
    "app-build-prod": "yarn workspace example-app run package"
  },
  "workspaces": [
    "app",
    "src"
  ]
}

Our /app/package.json:

{
  "name": "example_app",
  "productName": "...",
  "version": "0.0.1",
  "description": "...",
  "author": "...",
  "license": "...",
  "private": true,
  "scripts": {
    "run": "electron-forge start",
    "package": "electron-forge package"
  },
  "main": ".webpack/main",
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "example_app"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        }
      ],
      "plugins": [
        [
          "@electron-forge/plugin-webpack",
          {
            "mainConfig": "./webpack.main.config.js",
            "renderer": {
              "config": "./webpack.renderer.config.js",
              "entryPoints": [
                {
                  "html": "../src/index.ejs",
                  "js": "./renderer.js",
                  "name": "main_window"
                }
              ]
            }
          }
        ]
      ]
    }
  },
  "dependencies": {
    "electron-squirrel-startup": "1.0.0",
    "example-core": "*"
  },
  "devDependencies": {
    "@babel/core": "7.14.3",
    "@babel/preset-env": "7.14.2",
    "@babel/preset-react": "7.13.13",
    "@electron-forge/cli": "6.0.0-beta.57",
    "@electron-forge/maker-squirrel": "6.0.0-beta.57",
    "@electron-forge/maker-zip": "6.0.0-beta.57",
    "@electron-forge/plugin-webpack": "6.0.0-beta.57",
    "babel-loader": "8.2.2",
    "copy-webpack-plugin": "7.0.0",
    "css-loader": "5.2.6",
    "electron": "13.0.0",
    "file-loader": "6.2.0",
    "style-loader": "2.0.0",
    "webpack": "5.37.1",
    "webpack-cli": "4.7.0",
    "webpack-dev-server": "3.11.2"
  }
}

Our /src/package.json:

{
  "name": "example-core",
  "version": "0.1.0",
  "author": "...",
  "license": "...",
  "private": true,
  "dependencies": {
    "core-js": "3.10.1",
  }
}

@shot-codes
Copy link

Thanks for the response. I actually just yesterday got my workspaces working by using plain electron (not electron-forge). I'm not sure what exactly changed as I had attempted that exact thing numerous time last Friday and each time I was getting errors sourcing electron. I appreciate the response and desire to help. :)

@Eli-Black-Work
Copy link

@TheFoolishPupil Glad you got it working! Perhaps the full example will be useful to someone else, anyway 🙂

@easternmotors
Copy link

@Bosch-Eli-Black it's nice to see someone else having similar architecture :) by chance have you been able to get it working with PnP (removing nodeLinker from your .yarnrc.yml)? I haven't :/

@Eli-Black-Work
Copy link

@easternmotors Indeed! 🙂

No, I've never been able to get electron to work with PnP. The only update to our .yarnrc.yml file since last time I posted is that this section is no longer needed:

# We're using Yarn workspaces, which means that by default, all of our modules are hoisted into a node_modules folder that's in the root folder.
# This breaks electron, so we force each folder (app/, web/, and src/) to have their own node_modules folders.
# https://github.com/electron-userland/electron-forge/issues/869
nmHoistingLimits: workspaces

@zknicker
Copy link

Note for anyone using Bun: you can create your own symlink'd node_modules folder (create it in the app directory containing electron, and symlink it to the root node_modules in your monorepo). You'll need to create the symlink when you're running the dev server, and destroy it otherwise, as its presence creates problems with electron-forge package/make. But, it's a workable solution for anyone who is defying the "requirement" to use Yarn :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug plugin/webpack Issues or pull requests related to first-party webpack plugins/templates
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants