1

在我的Angular + Electron 应用程序中,我试图安装一些 sqlite 库,以便从 sqlite 数据库文件中读取内容。

我已经安装了better-sqlite3使用:

npm install --save better-sqlite3 
npm install --save-dev @types/better-sqlite3

我试着用它做:

import * as sqlite from 'better-sqlite3';

// ...

const myDb = sqlite('/path/to/file.sqlite');

但是,当应用程序构建时,它会失败:

./node_modules/better-sqlite3/build/better_sqlite3.node 中的错误 1:0 模块解析失败:意外字符 '' (1:0) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理这个文件。请参阅 https://webpack.js.org/concepts#loaders(此二进制文件省略了源代码) ./node_modules/integer/build/integer.node 中的错误 1:0 模块解析失败:意外字符“”(1: 0) 您可能需要适当的加载器来处理此文件类型,目前没有配置加载器来处理此文件。请参阅 https://webpack.js.org/concepts#loaders(此二进制文件省略了源代码)

看起来我不是第一个在使用 Electron 时遇到这个问题的人。事实上,这个问题已经在这里这里讨论过,但是我找不到适合我的解决方案。

4

1 回答 1

0

你试过用@angular-builders/custom-webpack吗?

npm i @angular-builders/custom-webpack --save-dev

在您的 angular.json 文件中,在您的架构师下设置:

"architect": {
  "build": {
    "builder": "@angular-builders/custom-webpack:browser",
    "options": {
      "customWebpackConfig": {
        "path": "./angular.webpack.js"
      },

然后在项目的根目录下添加一个自定义配置文件 angular.webpack.js:

module.exports = {
  externals: {
    'better-sqlite3': "require('better-sqlite3')"
  }
};
于 2021-03-20T20:53:12.347 回答