在 Angular + Electron 应用程序中使用 sqlite3:关键依赖项:依赖项的请求是一个表达式
Posted
技术标签:
【中文标题】在 Angular + Electron 应用程序中使用 sqlite3:关键依赖项:依赖项的请求是一个表达式【英文标题】:Using sqlite3 in an Angular + Electron app: Critical dependency: the request of a dependency is an expression 【发布时间】:2020-06-07 08:10:37 【问题描述】:在我的Angular + Electron app 中,我正在尝试安装一些 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 中的警告模块不是 发现:错误:无法解析“node-gyp” '/home/shin/sources/Keira3/node_modules/node-pre-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 中的错误模块未找到: 错误:无法解析“aws-sdk” '/home/shin/sources/Keira3/node_modules/node-pre-gyp/lib' 错误 ./node_modules/node-pre-gyp/lib/publish.js 找不到模块:错误: 无法解析“aws-sdk” '/home/shin/sources/Keira3/node_modules/node-pre-gyp/lib' 错误 ./node_modules/node-pre-gyp/lib/unpublish.js 找不到模块:错误: 无法解析“aws-sdk” '/home/shin/sources/Keira3/node_modules/node-pre-gyp/lib' 错误 ../node_modules/npm/bin/npm-cli.js 1:0 模块解析失败:意外 字符 '#' (1:0) 你可能需要一个合适的加载器来处理这个 文件类型,目前没有配置加载器来处理这个文件。 见https://webpack.js.org/concepts#loaders
!/usr/bin/env 节点 | ;(function () // 包装器,以防我们处于 module_context 模式 | // windows:在此文件夹中运行“npm blah”
将调用 WSH,而不是节点。
在this thread 中发布了此问题的解决方案,它是关于将以下内容添加到 webpack 配置文件中:
externals: 'sqlite3':'commonjs sqlite3',
但是我不清楚在我的 Angular 应用中添加此类配置的位置。
【问题讨论】:
【参考方案1】:我使用Custom webpack builders (angular-builders) 解决了我的问题。
允许自定义构建配置而不弹出 webpack 配置(ng 弹出)
安装后,我现在可以在我添加的位置指定自定义 webpack 配置:
module.exports =
externals:
'sqlite3':'commonjs sqlite3'
;
我还必须运行 node postinstall && electron-builder install-app-dep
才能使其正常工作。
【讨论】:
以上是关于在 Angular + Electron 应用程序中使用 sqlite3:关键依赖项:依赖项的请求是一个表达式的主要内容,如果未能解决你的问题,请参考以下文章
使用Angular与TypeScript构建Electron应用
Angular 2 + Electron 开发web和桌面应用