我需要用键盘和电子,但我用的是棱镜和打字稿。我在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?谢谢你
发布于 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函数,否则您就会得到问题中的错误。顶部的标准导入将为您提供输入信息。
发布于 2020-11-19 11:10:04
我用的是带电子的Vue,也有同样的问题。因此,问题在于在呈现程序过程中使用keytar,在这个过程中,您不能很容易地访问本地api。
const keytar = require("electron").remote.require("keytar");在我的组件中使用keytar解决了这个问题。
https://stackoverflow.com/questions/63034079
复制相似问题