A way to solve error in packing electron app with sqlite3
你现在看到的是本文章的英文版本,中文版本请前往 Electron应用打包Sqlite3报错的解决方案
Recently I build a Electron program with database.
I finally chose the Sqlite3
module to connect with my database. It worked well in dev mode. When I prepared to pack and publich it throwed the error below:
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
and aws-sdk
,mock-aws-s3
,nock
were not found
a script .cs could not run(not C#, a powershell script)
Ways to solve
For the first issue, it showes that HTML's loader was not found when webpack
tried to pack program. So you should edit the config of webpack. Add the rules in the config's module->rules:
{
test: /\.html$/,
use: {
loader: 'html-loader',
},
}
This attach the HTML files with html-loader, which can properly handle the file.
For the next issue, it is also lack of a loader for Sqlite3
to pack. I found for a while and got the solution in a Github issue #1700 :
Install sqlite3-loader
和node-loader
npm install sqlite3-loader node-loader
Samely update the config of webpack:
{
test: /sqlite3-binding\.js$/,
use: [ 'sqlite3-loader' ],
},
{
test: /\.node$/,
use: 'node-loader',
},
Repack and success
Tips
When finding the solution, someone said add this to webpack config:
externals: {
sqlite3: 'sqlite3'
}
I tried and it could pack, but will exclude the sqlite3 module and when running the packed program it cannot found it. So the program cannot run properly.
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »