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
中的任何依赖项都没有进入打包的应用程序。
看看
https://github.com/electron/forge/blob/2fe0f5d3dbc6047af81188041672fd135a46b99f/packages/plugin/webpack/src/WebpackPlugin.ts#L385所以你有两个选择:
按照以下模式在 Electron 的
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});
}
cd "my-app"
:: install dependency into your node_modules and update your package.json
npm install your-dependency --save-prod
npm run make