Electron应用打包Sqlite3报错的解决方案
侧边栏壁纸
  • 累计撰写 17 篇文章
  • 累计收到 22 条评论

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

拾雨
2023-08-27 / 0 评论 / 526 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年11月01日,已超过543天没有更新,若内容或图片失效,请留言反馈。
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-sdkmock-aws-s3nock这三个库缺失
以及一个脚本无法运行的问题,是.cs的脚本(一开始还以为是C#的代码)

问题解决方案

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

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

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

0

评论 (0)

取消