sharun k k
sharun k k

Reputation: 467

Showing error while running application in production mode of electron react boilorplate

I am geeting the follwoing error when I try to run the application in production mode. Running in development is working fine.Whe I try to run the app on production mode it is showing error.Error is file not found but file is already in the particular location.

  at rejectAndCleanup (electron/js2c/browser_init.js:217:1457)
    at Object.failListener (electron/js2c/browser_init.js:217:1670)
    at Object.emit (events.js:315:20) {
  errno: -6,
  code: 'ERR_FILE_NOT_FOUND',

My package.json file

{
  "name": "electron-react-webpack-boilerplate",
  "version": "1.15.0",
  "description": "Minimal Electron, React, PostCSS and Webpack boilerplate to help you get started with building your next app.",
  "license": "MIT",
  "private": false,
  "repository": {
    "type": "git",
    "url": "https://github.com/alexdevero/electron-react-webpack-boilerplate.git"
  },
  "homepage": "",
  "bugs": {
    "url": "https://github.com/alexdevero/electron-react-webpack-boilerplate/issues"
  },
  "author": {
    "name": "Alex Devero",
    "email": "[email protected]",
    "url": "https://github.com/alexdevero"
  },
  "keywords": [
    "app",
    "boilerplate",
    "electron",
    "open",
    "open-source",
    "postcss",
    "react",
    "reactjs",
    "source",
    "webpack"
  ],
  "engines": {
    "node": ">=9.0.0",
    "npm": ">=5.0.0",
    "yarn": ">=1.0.0"
  },
  "browserslist": [
    "last 4 versions"
  ],
  "main": "index.js",
  "scripts": {
    "prod": "cross-env NODE_ENV=production webpack --mode production --config webpack.build.config.js && electron --noDevServer .",
    "start": "cross-env NODE_ENV=development webpack serve --hot --host 0.0.0.0 --config=./webpack.dev.config.js --mode development",
    "build": "cross-env NODE_ENV=production webpack --config webpack.build.config.js --mode production",
    "package": "npm run build",
    "postpackage-windows": "electron-packager ./dist --out=./builds --platform=win32",
    "postpackage": "electron-packager ./ --out=./builds"
  },
  "dependencies": {
    "@material-ui/core": "^4.11.3",
    "@material-ui/icons": "^4.11.2",
    "@material-ui/lab": "^4.0.0-alpha.57",
    "ffmpeg-static": "^4.2.8",
    "fluent-ffmpeg": "^2.1.2",
    "material-ui-dropzone": "^3.5.0",
    "material-ui-image": "^3.3.1",
    "postcss": "^8.2.8",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-player": "^2.9.0",
    "react-router-dom": "^5.2.0",
    "react-window": "^1.8.6",
    "validator": "^13.5.2"
  },
  "devDependencies": {
    "@babel/core": "^7.13.10",
    "@babel/preset-env": "^7.13.10",
    "@babel/preset-react": "^7.12.13",
    "babel-loader": "^8.2.2",
    "cross-env": "^7.0.3",
    "css-loader": "^5.1.1",
    "electron": "^12.0.0",
    "electron-devtools-installer": "^3.1.1",
    "electron-packager": "^15.2.0",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^5.3.1",
    "mini-css-extract-plugin": "^1.3.9",
    "notistack": "^1.0.5",
    "postcss-import": "^14.0.0",
    "postcss-loader": "^5.1.0",
    "postcss-nested": "^5.0.5",
    "postcss-preset-env": "^6.7.0",
    "postcss-pxtorem": "^5.1.1",
    "style-loader": "^2.0.0",
    "webpack": "^5.24.4",
    "webpack-cli": "^4.5.0",
    "webpack-dev-server": "^3.11.2"
  }
}

and electron main file

'use strict'

// Import parts of electron to use
const { app, BrowserWindow,protocol } = require('electron')
const path = require('path')
const url = require('url')

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow

// Keep a reference for dev mode
let dev = false

// Broken:
// if (process.defaultApp || /[\\/]electron-prebuilt[\\/]/.test(process.execPath) || /[\\/]electron[\\/]/.test(process.execPath)) {
//   dev = true
// }

if (process.env.NODE_ENV !== undefined && process.env.NODE_ENV === 'development') {
  dev = true
}

// Temporary fix broken high-dpi scale factor on Windows (125% scaling)
// info: https://github.com/electron/electron/issues/9691
if (process.platform === 'win32') {
  app.commandLine.appendSwitch('high-dpi-support', 'true')
  app.commandLine.appendSwitch('force-device-scale-factor', '1')
}

function createWindow() {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    width: 1024,
    height: 768,
    show: false,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule:true,
      webSecurity:false
    }
  })

  // and load the index.html of the app.
  let indexPath

  if (dev && process.argv.indexOf('--noDevServer') === -1) {
    indexPath = url.format({
      protocol: 'http:',
      host: 'localhost:8080',
      pathname: 'index.html',
      slashes: true
    })
  }
   else {
    indexPath = url.format({
      protocol: 'file:',
      pathname: path.join(__dirname, 'dist', 'index.html'),
      slashes: true
    })
    console.log('prod')
  }

  mainWindow.loadURL(indexPath).catch(err=>{
    console.log(err)
  })

  // Don't show until we are ready and loaded
  mainWindow.once('ready-to-show', () => {
    mainWindow.show()

    // Open the DevTools automatically if developing
    if (dev) {
      const { default: installExtension, REACT_DEVELOPER_TOOLS } = require('electron-devtools-installer')

      installExtension(REACT_DEVELOPER_TOOLS)
        .catch(err => console.log('Error loading React DevTools: ', err))
      // mainWindow.webContents.openDevTools()
    }
  })

  // Emitted when the window is closed.
  mainWindow.on('closed', function() {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null
  })
  protocol.interceptFileProtocol('file', (request, callback) => {
    const url = request.url.substr(7)    /* all urls start with 'file://' */
    callback({ path: path.normalize(`${__dirname}/${url}`)})
  }, (err) => {
    if (err) console.error('Failed to register protocol')
  })
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)

// Quit when all windows are closed.
app.on('window-all-closed', () => {
  // On macOS it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // On macOS it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (mainWindow === null) {
    createWindow()
  }
})

Upvotes: 1

Views: 616

Answers (0)

Related Questions