未处理的拒绝(TypeError):keytar.setPassword不是函数

时间:2019-06-12 14:57:15

标签: javascript reactjs electron keytar

我正在尝试使用keytar.js保存密码,由于某些原因,当我从keytar使用ANY函数时,我一直收到此错误。

有关信息:lib。已安装,并且功能存在且存在(我使用console.log进行了检查),并且它们与catch()正常工作。

以下是一些代码:

 const keytar = require("keytar");

我正在React的componentDidMount()函数中使用它,

我尝试了这两个版本,但似乎都没有用:

  keytar
  .setPassword("stoma", "user", user)
  .then(() => {
   console.log("User .. OK !");
   })
  .catch(() => {
   console.log("User .. ERROR !");
   ok = false;
   })

 keytar.setPassword("stoma", "statut", "true");

这里也有一些错误日志:

 keytar.js:38 Uncaught (in promise) TypeError: keytar.setPassword is not a function
at keytar.js:38
at keytar.js:12
at new Promise (<anonymous>)
at callbackPromise (keytar.js:11)
at Object.setPassword (keytar.js:37)
at _callee$ (Login.js:52)
at tryCatch (runtime.js:62)
at Generator.invoke [as _invoke] (runtime.js:288)
at Generator.prototype.(:3000/anonymous function) [as next] (http://localhost:3000/static/js/0.chunk.js:1881:21)
at asyncGeneratorStep (asyncToGenerator.js:3)
at _next (asyncToGenerator.js:25)
at asyncToGenerator.js:32
at new Promise (<anonymous>)
at asyncToGenerator.js:21
at _validate (Login.js:48)
at validate (Login.js:48)

如果能为您提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用 Electron 时,必须通过主进程使用 keytar。从渲染过程调用 keytar 将不起作用。

this question 中所述,您必须执行以下操作:

^ 文件中,您必须使用所需的 keytar 逻辑定义要调用的侦听器。在这种情况下,获取和设置密码

(?=.*\p{Alnum})

然后从renderer进程,就可以调用

[^*@:;\n]+

(?<!\.)

ipcMain 文档:here。 ipcRenderer 文档:here