为什么 Electron 使用以前的更改而不是最新的更改来构建 React 应用程序?

Why Electron is building react app with previous changes instead of latest ones?

我创建了 React 应用程序并使用 electron-builder 构建了它,它运行良好,然后我更改了我的代码以添加新功能并使用相同的方法重新构建它,但这次我使用的是以前构建的。

请找到我的 electron.js 和 Package.json 文件,如果还需要,请告诉我。

electron.js

    const electron = require('electron');
    const app = electron.app;
    const BrowserWindow = electron.BrowserWindow;

    const path = require('path');
    const url = require('url');
    let mainWindow;

    function createWindow() {
      mainWindow = new BrowserWindow();
      mainWindow.maximize();
      //mainWindow.loadURL(isDev ? 'http://localhost:3000' : `file://${path.join(__dirname, '../build/index.html')}`);
      mainWindow.loadURL(url.format({
        pathname: path.join(__dirname, '../build/index.html'),
        protocol: 'file:',
        slashes: true
      }));
      mainWindow.openDevTools();
      mainWindow.on('closed', () => mainWindow = null);
    }

    app.on('ready', createWindow);

    app.on('window-all-closed', () => {
      if (process.platform !== 'darwin') {
        app.quit();
      }
    });

    app.on('activate', () => {
      if (mainWindow === null) {
        createWindow();
      }
    });

package.json

        {
      "name": "utility-core",
      "description": "Load bulk data to Fluent",
      "version": "0.0.2",
      "license": "ISC",
      "productName": "Fluent Bulk Import Utility",
      "author": {
        "name": "Zain Ul Abideen",
        "email": "zain.ulabideen@faircg.com"
      },
      "private": true,
      "main": "public/electron.js",
      "homepage": "./",
      "dependencies": {
        "autoprefixer": "7.1.6",
        "axios": "^0.18.0",
        "babel-core": "6.26.0",
        "babel-eslint": "7.2.3",
        "babel-jest": "20.0.3",
        "babel-loader": "7.1.2",
        "babel-preset-react-app": "^3.1.1",
        "babel-runtime": "6.26.0",
        "bootstrap": "^4.1.3",
        "case-sensitive-paths-webpack-plugin": "2.1.1",
        "chalk": "1.1.3",
        "concurrently": "^4.1.1",
        "css-loader": "0.28.7",
        "dotenv": "4.0.0",
        "dotenv-expand": "4.2.0",
        "electron-is-dev": "^1.1.0",
        "eslint": "4.10.0",
        "eslint-config-react-app": "^2.1.0",
        "eslint-loader": "1.9.0",
        "eslint-plugin-flowtype": "2.39.1",
        "eslint-plugin-import": "2.8.0",
        "eslint-plugin-jsx-a11y": "5.1.1",
        "eslint-plugin-react": "7.4.0",
        "extract-text-webpack-plugin": "3.0.2",
        "file-loader": "1.1.5",
        "fs-extra": "3.0.1",
        "html-webpack-plugin": "2.29.0",
        "jest": "20.0.4",
        "jquery": "^3.4.1",
        "mdbreact": "^4.15.0",
        "object-assign": "4.1.1",
        "papaparse": "^4.6.0",
        "postcss-flexbugs-fixes": "3.2.0",
        "postcss-loader": "2.0.8",
        "promise": "8.0.1",
        "raf": "3.4.0",
        "react": "^16.4.1",
        "react-collapsible": "^2.6.0",
        "react-dev-utils": "^5.0.1",
        "react-dom": "^16.4.1",
        "react-file-reader": "^1.1.4",
        "react-router-dom": "^4.2.0",
        "react-spinners": "^0.4.6",
        "react-transition-group": "^2.2.1",
        "resolve": "1.6.0",
        "style-loader": "0.19.0",
        "sw-precache-webpack-plugin": "0.11.4",
        "universal-cookie": "^3.0.4",
        "url-loader": "0.6.2",
        "wait-on": "^3.2.0",
        "webpack": "3.8.1",
        "webpack-dev-server": "2.9.4",
        "webpack-manifest-plugin": "1.3.2",
        "whatwg-fetch": "2.0.3"
      },
      "scripts": {
        "start": "node scripts/start.js",
        "build": "node scripts/build.js",
        "test": "node scripts/test.js --env=jsdom",
        "pack": "electron-builder --dir",
        "dist": "electron-builder"
      },
      "devDependencies": {
        "csv-loader": "^3.0.2",
        "electron": "^1.8.8",
        "electron-builder": "^20.44.4",
        "electron-packager": "^8.7.2"
      },
      "jest": {
        "collectCoverageFrom": [
          "src/**/*.{js,jsx,mjs}"
        ],
        "setupFiles": [
          "<rootDir>/config/polyfills.js"
        ],
        "testMatch": [
          "<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
          "<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
        ],
        "testEnvironment": "node",
        "testURL": "http://localhost",
        "transform": {
          "^.+\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
          "^.+\.css$": "<rootDir>/config/jest/cssTransform.js",
          "^(?!.*\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
        },
        "transformIgnorePatterns": [
          "[/\\]node_modules[/\\].+\.(js|jsx|mjs)$"
        ],
        "moduleNameMapper": {
          "^react-native$": "react-native-web"
        },
        "moduleFileExtensions": [
          "web.js",
          "js",
          "json",
          "web.jsx",
          "jsx",
          "node",
          "mjs"
        ]
      },
      "babel": {
        "presets": [
          "env",
          "react-app"
        ],
        "plugins": []
      },
      "eslintConfig": {
        "extends": "react-app"
      },
      "build": {
        "extends": null,
        "appId": "com.example.utility-core",
        "files": [
          "build/**/*",
          "node_modules/**/*",
          "public/electron.js"
        ],
        "directories": {
          "buildResources": "build"
        }
      }
    }

我也试过 "electron-dev": "concurrently \" npm start\" \"wait-on http://localhost:3000 && electron .\"" 但加载后,在浏览器上获得最新版本,但在桌面上获得旧版本。在此先感谢您的帮助

因为您打包了旧的 react 代码。在使用 electron-builder 打包您的应用程序之前,您需要构建您的 react 应用程序。所以你需要更改 pack 脚本来构建 react.

"pack": "npm run build && electron-builder --dir",