首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在电子内部使用键焦油与角

在电子内部使用键焦油与角
EN

Stack Overflow用户
提问于 2020-07-22 12:21:04
回答 2查看 624关注 0票数 0

我需要用键盘和电子,但我用的是棱镜和打字稿。我在main.ts中导入了模块

import * as keytar from 'keytar';

但没能装上。

或者,在模块中,我使用import * as keytar from '../../../node_modules/keytar';

但电子在开发控制台中返回此错误。

错误:节点加载程序:错误:无效的包/home/project/angularelectron/node_modules/electron/dist/resources/electron.asar在对象.( Object../node_modules/keytar/build/Release/keytar.node (keytar.node:6) at webpack_require (引导代码:79)在webpack_require (引导代码:79)在webpack_require(引导代码:79),在webpack_require(引导代码:79)在webpack_require (引导代码:79)的webpack_require(引导代码:79)的webpack_require(启动代码:79)。./src/app/home/home-routing.module.ts (detail.module.ts:13) at detail.module.ts:13,at Module./src/app/app-routing.module.ts

我怎么才能正确加载keytar?谢谢你

EN

回答 2

Stack Overflow用户

发布于 2021-04-30 08:54:47

首先,请不要使用远程模块,因为不推荐它是有原因的。

我只是有同样的问题,并设法解决了它的一些修补。

由于keytar是一个具有本机依赖项的节点模块,可以与电子呈现程序进程一起使用,因此需要跳过几个环。在创建浏览器窗口时,确保nodeIntegration设置为true,contextIsolation设置为false。在早期版本中,设置nodeIntegration就足够了,但现在还不够。

然后,使用它的角度,有额外的步骤。您必须使用@角-建设者/自定义webpack和节点加载器。然后,在组件或服务中,将keytar导入为import * as keytar from "keytar";,并在组件定义中声明private keytar: typeof keytar;。这是重要的一点:在构造函数this.keytar = window.require("keytar");中,您必须使用电子的require函数,否则您就会得到问题中的错误。顶部的标准导入将为您提供输入信息。

票数 2
EN

Stack Overflow用户

发布于 2020-11-19 11:10:04

我用的是带电子的Vue,也有同样的问题。因此,问题在于在呈现程序过程中使用keytar,在这个过程中,您不能很容易地访问本地api。

代码语言:javascript
复制
const keytar = require("electron").remote.require("keytar");

在我的组件中使用keytar解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63034079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档