小能豆

使用 webpack 打包 Electron 应用程序时出错“无法解决

javascript

使用 webpack 打包 Electron 应用程序时出现错误Cannot resolve module 'electron'

我正在尝试使用React创建一个Electron应用程序。我使用Webpack来编译React JSX语法,但是当我尝试使用命令进行编译时,出现了以下错误:webpack

./app.jsx 中出现错误,未找到模块:错误:无法解析 /Users/masterT/Downloads/gist 中的模块“electron”

@ ./app.jsx 6:18-37

这是应用程序代码


阅读 52

收藏
2024-06-25

共1个答案

小能豆

您看到的错误消息表明 Webpack 无法解析该electron模块。这是因为electron这是一个原生模块,Webpack 不会像其他依赖项那样对其进行打包。

要解决此问题,您需要对 Webpack 配置和项目设置进行一些调整:

  1. 分离主进程和渲染进程:确保您的 Electron 应用程序的主进程和渲染进程正确分离。通常,您将有两个 Webpack 配置:一个用于主进程,一个用于渲染进程(React 应用程序)。
  2. 用途externals``electron:在渲染器进程的 Webpack 配置中,将其标记electron为外部依赖项。这会告诉 Webpack 不要将其与您的 React 代码捆绑在一起electron

以下是实现此目标的步骤:

  1. 目录结构:确保您的项目结构将主进程和渲染进程分开:

/project-root /src /main main.js /renderer app.jsx index.html package.json webpack.main.config.js webpack.renderer.config.js

  1. 主进程的 Webpack 配置(webpack.main.config.js:此配置适用于您的 Electron 主进程。

```js
const path = require(‘path’);

module.exports = {
entry: ‘./src/main/main.js’,
target: ‘electron-main’,
output: {
path: path.resolve(__dirname, ‘dist’),
filename: ‘main.js’
},
node: {
__dirname: false,
__filename: false
}
};
```

  1. 渲染器进程的 Webpack 配置(webpack.renderer.config.js:此配置适用于您的 React 应用程序(渲染器进程)。

```js
const path = require(‘path’);

module.exports = {
entry: ‘./src/renderer/app.jsx’,
target: ‘electron-renderer’,
module: {
rules: [
{
test: /.jsx?$/,
exclude: /node_modules/,
use: ‘babel-loader’
}
]
},
resolve: {
extensions: [‘.js’, ‘.jsx’]
},
output: {
path: path.resolve(__dirname, ‘dist’),
filename: ‘renderer.js’
},
externals: {
electron: ‘require(“electron”)’
}
};
```

  1. 安装必要的依赖项:确保已安装所需的依赖项。

sh npm install --save-dev webpack webpack-cli babel-loader @babel/core @babel/preset-env @babel/preset-react npm install react react-dom electron

  1. Babel 配置(.babelrc:添加 Babel 配置文件来转译你的 JSX。

json { "presets": ["@babel/preset-env", "@babel/preset-react"] }

  1. 包脚本(package.json:更新您的package.json脚本以包含用于构建主进程和渲染器进程的脚本。

json { "name": "your-electron-app", "version": "1.0.0", "main": "dist/main.js", "scripts": { "build-main": "webpack --config webpack.main.config.js", "build-renderer": "webpack --config webpack.renderer.config.js", "build": "npm run build-main && npm run build-renderer", "start": "electron ." }, "devDependencies": { "webpack": "^5.x.x", "webpack-cli": "^4.x.x", "babel-loader": "^8.x.x", "@babel/core": "^7.x.x", "@babel/preset-env": "^7.x.x", "@babel/preset-react": "^7.x.x" }, "dependencies": { "react": "^17.x.x", "react-dom": "^17.x.x", "electron": "^13.x.x" } }

  1. 运行应用程序

  2. 使用 构建应用程序npm run build

  3. 使用 启动 Electron 应用程序npm start

通过遵循这些步骤,你应该能够使用 Webpack 和 React 编译你的 Electron 应用程序,而不会遇到模块解析错误electron

2024-06-25