You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite+Electron+React项目集成sqlite3启动报错:无法动态require

解决Vite+Electron集成sqlite3+Sequelize的动态require错误

问题分析

报错核心是Rollup无法处理sqlite3的动态require调用——sqlite3属于原生Node.js模块,Vite默认打包规则对这类模块支持有限,且你之前的@rollup/plugin-commonjs配置未作用到Electron主进程的独立打包流程中。

解决步骤

1. 调整Vite配置,针对Electron主进程配置CommonJS

将@rollup/plugin-commonjs的配置移至Electron主进程的build.rollupOptions内,确保配置只作用于主进程打包:

import { defineConfig } from "vite";
import path from "node:path";
import electron from "vite-plugin-electron/simple";
import react from "@vitejs/plugin-react";
import commonjs from "@rollup/plugin-commonjs";

export default defineConfig({
  plugins: [
    react(),
    electron({
      main: {
        entry: "electron/main.ts",
        build: {
          rollupOptions: {
            plugins: [
              commonjs({
                dynamicRequireTargets: [
                  "node_modules/sqlite3/**/*",
                  "node_modules/sequelize/**/*" // 同步处理Sequelize的动态依赖
                ],
              }),
            ],
          },
        },
      },
      preload: {
        input: path.join(__dirname, "electron/preload.ts"),
      },
      renderer: process.env.NODE_ENV === "test" ? undefined : {},
    }),
  ],
});

2. 重新安装并重建sqlite3原生模块

先卸载现有依赖,再重新安装并针对当前Electron版本重建:

npm uninstall sqlite3
npm install sqlite3 --save-dev
npx electron-rebuild -f -w sqlite3

若你的Electron版本非最新,需指定版本号确保重建匹配:

npx electron-rebuild -f -w sqlite3 --version=你的Electron版本号

3. 规范模块使用范围

原生模块不可直接在React渲染进程中引入,需按Electron架构拆分:

  • 在主进程(main.ts)中初始化Sequelize与sqlite3连接
  • 预加载脚本(preload.ts)通过contextBridge暴露IPC调用方法
  • 渲染进程通过window.electronAPI间接调用主进程的数据库逻辑

4. 补充Vite依赖优化配置

若问题仍存在,添加optimizeDeps.exclude让Vite跳过对sqlite3和Sequelize的预打包:

export default defineConfig({
  optimizeDeps: {
    exclude: ["sqlite3", "sequelize"],
  },
  // ...其他配置
});

内容的提问来源于stack exchange,提问作者Joel Sanchez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:03:18