如何使用Electron与Next.js 13.4构建桌面应用

来源:Nodejs社区作者:木下头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何使用Electron与Next.js 13.4构建桌面应用》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Electron与Next.js 13.4构建桌面应用》有用,将其分享出去将是对创作者最好的鼓励。

Electron是跨平台桌面应用开发框架,能让开发者用Web技术构建桌面程序,Next.js 13.4是React生态中成熟的全栈框架,二者结合可以高效开发桌面应用。下面我们一步步完成整个开发流程。

如何使用Electron与Next.js 13.4构建桌面应用

环境准备

首先需要确保本地已经安装Node.js,建议版本在16.0以上,然后安装必要的全局依赖:

# 安装Electron全局工具
npm install -g electron
# 创建Next.js项目
npx create-next-app@13.4 my-electron-app

项目基础配置

调整Next.js配置

为了让Next.js适配Electron的运行环境,需要修改next.config.js文件,关闭静态资源优化,避免路径问题:

/** @type {import('next').NextConfig} */
const nextConfig = {
  // 关闭静态优化,适配Electron本地文件加载
  target: 'server',
  // 关闭图片优化,避免Electron中路径异常
  images: {
    unoptimized: true,
  },
}

module.exports = nextConfig

添加Electron主进程文件

在项目根目录创建electron-main.js作为Electron的主进程文件,负责创建应用窗口和加载Next.js页面:

const { app, BrowserWindow } = require('electron')
const path = require('path')

function createWindow() {
  const win = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      // 开启Node.js集成,方便调用系统能力
      nodeIntegration: true,
      contextIsolation: false,
    },
  })

  // 开发环境加载本地Next.js服务,生产环境加载打包后的静态文件
  if (process.env.NODE_ENV === 'development') {
    win.loadURL('http://localhost:3000')
    // 打开开发者工具
    win.webContents.openDevTools()
  } else {
    win.loadFile(path.join(__dirname, 'out/index.html'))
  }
}

app.whenReady().then(() => {
  createWindow()
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

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

启动脚本配置

修改package.json添加启动和打包相关的脚本,方便开发调试和后续发布:

{
  "name": "my-electron-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev:next": "next dev",
    "dev:electron": "electron .",
    "dev": "concurrently "npm run dev:next" "npm run dev:electron"",
    "build:next": "next build && next export -o out",
    "build:electron": "electron-builder",
    "build": "npm run build:next && npm run build:electron"
  },
  "dependencies": {
    "next": "13.4.0",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "concurrently": "^8.2.0",
    "electron": "^25.0.0",
    "electron-builder": "^24.6.0"
  }
}

这里需要安装concurrently依赖,用来同时启动Next.js开发服务和Electron主进程,安装命令如下:

npm install concurrently --save-dev

开发调试

执行npm run dev就可以启动开发环境,此时会同时运行Next.js的3000端口服务和Electron窗口,修改Next.js的代码后页面会自动热更新,方便调试界面和逻辑。

打包发布

首先需要执行npm run build:next打包Next.js项目,生成静态文件到out目录,然后配置electron-builder的打包参数,在项目根目录创建electron-builder.yml

appId: com.example.myapp
productName: 我的桌面应用
directories:
  output: dist
files:
  - "out/**/*"
  - "electron-main.js"
win:
  target: nsis
mac:
  target: dmg
linux:
  target: AppImage

执行npm run build就可以生成对应平台的安装包,安装包会输出到dist目录下。

常见问题说明

  • 如果Electron窗口白屏,检查Next.js的静态文件路径是否正确,生产环境需要确认out目录已经生成。
  • 调用Node.js系统API时,需要确保nodeIntegration已经开启,或者配置preload脚本安全调用。
  • Next.js 13.4的App Router模式下,静态导出需要确保所有页面都是静态生成的,避免使用服务端独有API。

ElectronNext.js_13.4桌面应用开发ReactNode.js修改时间:2026-07-11 23:33:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。