首页 > 解决方案 > 在 Angular + Electron 应用程序中使用 sqlite3:关键依赖项:依赖项的请求是一个表达式

问题描述

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

我已经使用以下方法安装了sqlite3

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

我试着用它做:

import * as sqlite from 'sqlite3';

// ...

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

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

./node_modules/sqlite3/lib/sqlite3.js 中的警告 4:14-35 关键依赖项:依赖项的请求是一个表达式

./node_modules/node-pre-gyp/lib/pre-binding.js 中的警告 20:22-48 关键依赖项:依赖项的请求是一个表达式

./node_modules/node-pre-gyp/lib/util/versioning.js 中的警告 17:20-67 关键依赖:依赖的请求是一个表达式

../node_modules/npm/lib/npm.js 中的警告 124:16-56 关键依赖项:依赖项的请求是一个表达式

../node_modules/npm/lib/npm.js 中的警告 235:10-25 关键依赖项:依赖项的请求是一个表达式

../node_modules/npm/node_modules/encoding/lib/iconv-loader.js 中的警告 9:12-34 关键依赖:依赖的请求是一个表达式

./node_modules/node-pre-gyp/lib/util/compile.js 中的警告模块未找到:错误:无法解析“/home/shin/sources/Keira3/node_modules/node-pre”中的“node-gyp” -gyp/lib/util'

./node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html 中的警告 1:0 模块解析失败:意外令牌 (1:0) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理这个文件。见 https://webpack.js.org/concepts#loaders

| |

./node_modules/node-pre-gyp/lib/info.js 中的错误找不到模块:错误:无法解析“/home/shin/sources/Keira3/node_modules/node-pre-gyp”中的“aws-sdk” /lib' ./node_modules/node-pre-gyp/lib/publish.js 中的错误 找不到模块:错误:无法解析 '/home/shin/sources/Keira3/node_modules/node- 中的 'aws-sdk' ./node_modules/node-pre-gyp/lib/unpublish.js 中的 pre-gyp/lib' 错误模块未找到:错误:无法解析 '/home/shin/sources/Keira3/node_modules 中的 'aws-sdk' /node-pre-gyp/lib' ../node_modules/npm/bin/npm-cli.js 中的错误 1:0 模块解析失败:意外字符 '#' (1:0) 您可能需要适当的加载程序来处理此文件类型,当前没有配置加载程序来处理此文件。请参阅https://webpack.js。

!/usr/bin/env 节点 | ;(function () { // 包装器,以防我们处于 module_context 模式 | // windows:在此文件夹中运行“npm blah”

将调用 WSH,而不是节点。

此线程中发布了此问题的解决方案,它是关于将以下内容添加到 webpack 配置文件中:

externals: { 'sqlite3':'commonjs sqlite3', }

但是我不清楚在我的 Angular 应用程序中添加此类配置的位置。

标签: angularsqlitewebpackelectronnode-sqlite3

解决方案


我使用Custom webpack builder (angular-builders)解决了我的问题。

允许在不弹出 webpack 配置的情况下自定义构建配置(ng 弹出)

安装后,我现在可以在我添加的位置指定自定义 webpack 配置:

module.exports = {
    externals: {
        'sqlite3':'commonjs sqlite3'
    }
};

我还必须跑步node postinstall && electron-builder install-app-dep才能让它发挥作用。


推荐阅读