【问题标题】:Using sqlite3 in an Angular + Electron app: Critical dependency: the request of a dependency is an expression在 Angular + Electron 应用程序中使用 sqlite3:关键依赖项:依赖项的请求是一个表达式
【发布时间】: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 应用中添加此类配置的位置。

【问题讨论】:

    标签: angular sqlite webpack electron node-sqlite3


    【解决方案1】:

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

    允许自定义构建配置而不弹出 webpack 配置(ng 弹出)

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

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

    我还必须运行 node postinstall && electron-builder install-app-dep 才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 2021-06-13
      • 2016-08-28
      • 2017-08-11
      • 2020-06-15
      • 1970-01-01
      • 2022-11-10
      • 2023-02-10
      • 2018-10-10
      相关资源
      最近更新 更多