sindresorhus / get-windows

Get metadata about the active window and open windows (title, id, bounds, owner, etc)
MIT License
783 stars 161 forks source link

Error Running Simple Example on Electron Forge #162

Closed ryanjohansson closed 4 months ago

ryanjohansson commented 1 year ago

Hi Everyone,

I hope you are doing well! I was wondering does anyone have a solution regarding this error I am receiving?

Error Message
Error: spawn /Users/ryan/electronForgeTest/.webpack/main/native_modules/main EACCES
    at ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -13,
  code: 'EACCES',
  syscall: 'spawn /Users/ryan/electronForgeTest/.webpack/main/native_modules/main',
  path: '/Users/ryan/electronForgeTest/.webpack/main/native_modules/main',
  spawnargs: [],
  cmd: '/Users/ryan/electronForgeTest/.webpack/main/native_modules/main',
  stdout: '',
  stderr: ''
}
Code (Main.js)
const activeWindow = require('active-win');
(async () => {
  try {
    // options = [];
    // console.log(await activeWindow(options));
    console.log(await activeWindow());
  } catch (error) {
    console.log(error);
  }
    /*
    {
        title: 'Unicorns - Google Search',
        id: 5762,
        bounds: {
            x: 0,
            y: 0,
            height: 900,
            width: 1440
        },
        owner: {
            name: 'Google Chrome',
            processId: 310,
            bundleId: 'com.google.Chrome',
            path: '/Applications/Google Chrome.app'
        },
        url: 'https://sindresorhus.com/unicorn',
        memoryUsage: 11015432
    }
    */
})();
Package.json (If this helps)
{
  "name": "electronForgeTest",
  "productName": "electronForgeTest",
  "version": "1.0.0",
  "description": "My Electron application description",
  "main": ".webpack/main",
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "echo \"No linting configured\""
  },
  "keywords": [],
  "author": {
    "name": "ryanjohansson"
  },
  "license": "MIT",
  "devDependencies": {
    "@babel/core": "^7.20.7",
    "@babel/preset-react": "^7.18.6",
    "@electron-forge/cli": "^6.0.4",
    "@electron-forge/maker-deb": "^6.0.4",
    "@electron-forge/maker-dmg": "^6.0.4",
    "@electron-forge/maker-rpm": "^6.0.4",
    "@electron-forge/maker-squirrel": "^6.0.4",
    "@electron-forge/maker-zip": "^6.0.4",
    "@electron-forge/plugin-webpack": "^6.0.4",
    "@electron/remote": "^2.0.9",
    "@mui/icons-material": "^5.11.0",
    "@mui/material": "^5.11.4",
    "@vercel/webpack-asset-relocator-loader": "^1.7.3",
    "babel-loader": "^9.1.0",
    "css-loader": "^6.7.3",
    "electron": "22.0.0",
    "node-loader": "^2.0.0",
    "react-router-dom": "^6.6.2",
    "sass": "^1.57.1",
    "sass-loader": "^13.2.0",
    "style-loader": "^3.3.1"
  },
  "dependencies": {
    "@emotion/react": "^11.10.5",
    "@emotion/styled": "^11.10.5",
    "active-win": "^8.0.3",
    "electron-squirrel-startup": "^1.0.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  }
}

I have been trying to get this library to work on electron-forge for the past few days, but have had no success. Please let me know if anyone has a solution! Thanks!

wrgoto commented 1 year ago

Running into the same issue. It would be great to get active-win working with Electron Forge since Electron Builder is lacking a lot of support especially with their electron-webpack library.

wrgoto commented 1 year ago

@ryanjohansson It works if you allow permissions to the .webpack/main/native_modules/main file via chmod.

kriakiku commented 1 year ago

I was able to run with Electron Forge: active-win+8.1.0.patch You can apply edits via patch-package

Jaarson commented 6 months ago

Changing chmod works. I'm using webpack-shell-plugin-next. Here is the Webpack config:

// ...
const WebpackShellPluginNext = require('webpack-shell-plugin-next')
// ...
export const plugins = [
// ...
  new WebpackShellPluginNext({
    onBuildEnd: {
      scripts: ['chmod +x .webpack/main/native_modules/main'],
      blocking: false,
      parallel: true,
    },
  }),
]