使用电子锻造窗口打包电子应用程序后找不到节点模块

问题描述 投票:0回答:2

Electron 应用程序是使用 electro-forge webpack 模板初始化的,一切都在 macOS 上完美运行。 使用 electron-forge start 运行开发版本时,该应用程序可以在 Windows 上完美加载。 使用 electron-forge make 将应用程序打包为 Windows 后,构建就会成功完成。但是在运行打包的应用程序时,会抛出“找不到模块 X”。 文件夹 ./out/app/resources/app/node_modules 是空的。 package.json ./out/app/resources/app/package.json 如下所示。 "name": "my-app", "productName": "my-app", "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": "", "email": "" }, "license": "MIT", "config": {}, "dependencies": {}, "devDependencies": {}, "optionalDependencies": {}, "peerDependencies": {} }

package.json

中的任何依赖项都没有进入打包的应用程序。

electron cross-platform electron-forge
2个回答
0
投票

看看

https://github.com/electron/forge/blob/2fe0f5d3dbc6047af81188041672fd135a46b99f/packages/plugin/webpack/src/WebpackPlugin.ts#L385

它只是忽略了所有不是 .webpack 的东西。

所以你有两个选择:

按照以下模式在 Electron 的
  1. packagerConfig 中定义您自己的忽略函数:
https://www.electronforge.io/config/configuration# Electron-packager-config

定义一个钩子来复制您需要的所有内容。
  1. packageAfterCopy: async (_, appResources) => { if(appResources == null) throw new Error(`Unknown platform ${options.platform}`); const srcNodeModules = path.join(__dirname, 'node_modules'); const destNodeModules = path.join(appResources, 'node_modules'); fs.cpSync( srcNodeModules, destNodeModules, {recursive: true}); }


-2
投票

cd "my-app" :: install dependency into your node_modules and update your package.json npm install your-dependency --save-prod npm run make

© www.soinside.com 2019 - 2024. All rights reserved.