0
0
0

Electron应用打包Sqlite3报错的解决方案

2023-08-27
2026-10-27
文章摘要
|

You are watching the Chinese version of this passage, to English version, please check A way to solve error in packing electron app with sqlite3

最近拿Electron写了一个GUI,然后用到了数据库 数据库模块搜寻一番后用了Sqlite3这个模块,于是开始了长达四个小时的网络搜寻( 在dev下程序可以正常运行,但是一到打包的时候就开始报错 错误内容如下:(找的别的但是是这些个)

ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

<!doctype html>

after installing pnpm i npm bluebird mock-aws-s3 aws-sdk nock --save-optional

以及aws-sdk,mock-aws-s3,nock这三个库缺失 以及一个脚本无法运行的问题,是.cs的脚本(一开始还以为是C#的代码)

问题解决方案

对于第一个问题,是webpack在打包过程中缺失了对HTML的loader,因此在webpack的config里的module->rules加入以下规则:

      {
        test: /\.html$/,
        use: {
          loader: 'html-loader',
        },
      }

即可消除这条错误 对于后面四个,其实也是对sqlite3缺乏一个loader来进行打包,在网上找了巨久( 终于在Github的一个issue里找到了解决方案 #1700 : 安装 sqlite3-loader和node-loader

npm install sqlite3-loader node-loader

同样更新webpack配置文件,在刚刚的rules里加上:

        {
            test: /sqlite3-binding\.js$/,
            use: [ 'sqlite3-loader' ],
        },

        {
            test: /\.node$/,
            use: 'node-loader',
        },

重新打包即可解决问题

提示

之前有看到说在config里加上

externals: {
      sqlite3: 'sqlite3'
  }

的,我试过了,能打包,就是运行之后会报错找不到模块sqlite3而已(

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

Electron应用打包Sqlite3报错的解决方案
/archives/46
作者
拾雨
发布于
2023-08-27
许可协议
CC BY-NC-SA 4.0

评论