Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 打包的Electron应用程序找不到节点模块_Webpack_Electron_Electron Packager_Electron Forge - Fatal编程技术网

Webpack 打包的Electron应用程序找不到节点模块

Webpack 打包的Electron应用程序找不到节点模块,webpack,electron,electron-packager,electron-forge,Webpack,Electron,Electron Packager,Electron Forge,我有一个电子项目,是使用设置。该应用程序在本地运行良好,我正在尝试将其打包,以便在各种操作系统上发布。但是,当我打包并编译应用程序并尝试运行它时,我收到如下错误:找不到模块…: A JavaScript error occurred in the main process Uncaught Exception: Error: Cannot find module 'electron-compile' at Module._resolveFilename (module.js:470:15

我有一个电子项目,是使用设置。该应用程序在本地运行良好,我正在尝试将其打包,以便在各种操作系统上发布。但是,当我打包并编译应用程序并尝试运行它时,我收到如下错误:
找不到模块…

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'electron-compile'
    at Module._resolveFilename (module.js:470:15)
    at Function.Module._resolveFilename (/usr/lib/my-app/resources/electron.asar/common/reset-search-paths.js:35:12)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/lib/my-app/resources/app/es6-shim.js:4:23)
    at Object.<anonymous> (/usr/lib/my-app/resources/app/es6-shim.js:10:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
forge.config.js
我做错了什么?似乎构建的
electron.asar
不知道如何/在何处找到某些节点\ u模块,但我的印象是,它们将包含在
webpack
创建的捆绑包中,您不能将webpack用于通过
electron forge
创建的项目。这不是不可能的事情,但您需要各种自定义配置才能使其正常工作

electron-forge
是基于
electron-compile
构建的,它在电子过程中动态注册transfilation-hook。当您通过electron forge的预设构建脚本构建包时,它将生成正确的依赖项集以及模块依赖项
electron compile
是其中之一,它是必需的依赖项,但您的网页配置会破坏这些依赖项

TL:DR

  • electron forge
    有自己的流程
  • 运行webpack,然后通过
    forge
    打包可以破坏东西

  • 我建议只采用一种方式(在webpack和forge之间),在第一次安装时,定制混合使用webpack并非易事。

    您不能将webpack用于通过
    electron forge
    创建的项目。这不是不可能的事情,但您需要各种自定义配置才能使其正常工作

    electron-forge
    是基于
    electron-compile
    构建的,它在电子过程中动态注册transfilation-hook。当您通过electron forge的预设构建脚本构建包时,它将生成正确的依赖项集以及模块依赖项
    electron compile
    是其中之一,它是必需的依赖项,但您的网页配置会破坏这些依赖项

    TL:DR

  • electron forge
    有自己的流程
  • 运行webpack,然后通过
    forge
    打包可以破坏东西

  • 我建议只采用一种方法(在webpack和forge之间),定制混合它对于第一次安装来说并不简单。

    有一个新的webpack插件,可以与Electron forge一起使用,允许您覆盖主脚本和渲染器脚本的基本编译。我还没有亲自测试过,因为我还在想办法


    有一个新的网页包插件,可以与Electron Forge一起使用,允许您覆盖主脚本和渲染器脚本的基本编译。我还没有亲自测试过,因为我还在想办法


    我理解你的意思,这可能意味着我将转而使用
    electron builder
    。electron生态系统是由可选依赖项和配置组成的真正的蜘蛛网,我对它越来越不抱幻想了。谢谢您的回答。您可以直接使用forge所依赖的
    electron packager
    ,而不是使用electron forge进行包装。您尝试在配置中使用forge很重要,直接使用
    electron packager
    应该可以工作。问题实际上是
    electron packager
    ,尤其是
    windows installer
    依赖性。我的问题与此错误有关:。推荐的解决方法是使用
    webpack
    bundlejs
    ,这就是我最初的SO问题。我理解你的意思,这可能意味着我将转而使用
    electron builder
    。electron生态系统是由可选依赖项和配置组成的真正的蜘蛛网,我对它越来越不抱幻想了。谢谢您的回答。您可以直接使用forge所依赖的
    electron packager
    ,而不是使用electron forge进行包装。您尝试在配置中使用forge很重要,直接使用
    electron packager
    应该可以工作。问题实际上是
    electron packager
    ,尤其是
    windows installer
    依赖性。我的问题与此错误有关:。推荐的解决方法是使用类似于
    webpack
    bundlejs
    的东西,这就是我最初遇到SO问题的原因。
    const path = require('path');
    const webpack = require('webpack');
    
    module.exports = {
      target: 'electron-main',
      resolve: {
        extensions: ['.js']
      },
      entry: [`${__dirname}/src/main.js`],
      output: {
        path: `${__dirname}/dist`,
        filename: 'main.js'
      },
      module: {
        exprContextCritical: false,
        rules: [
          {
            exclude: /node_modules/,
            test: /.(ui.js|s?css|html|png|jpe?g|ico|svg)$/,
            use: 'ignore-loader'
          }
        ]
      }
    };
    
    const path = require('path');
    
    module.exports = {
      "make_targets": {
        "win32": ["squirrel"],
        "linux": ["deb"]
      },
      "electronPackagerConfig": {
        "dir": 'dist',
        "ignore": [
          "src/scss",
          ".*scss",
          "README.md",
          ".gitignore",
          ".nvmrc",
          "gulpfile.js",
          "forge.config.js"
        ]
      },
      "electronInstallerDebian": {
        "icon": {
          "scalable": path.join(__dirname, 'src/assets/icons/debian/Icon.svg')
        },
        "productName": "MyProduct"
      },
      "electronWinstallerConfig": {
        "iconUrl": path.join(__dirname, 'src/assets/icons/windows/Icon.ico'),
        "name": "MyProduct"
      }
    };