Javascript 可能未处理的承诺拒绝(id:0):错误:“0”;GetLoginDa“;是只读的

Javascript 可能未处理的承诺拒绝(id:0):错误:“0”;GetLoginDa“;是只读的,javascript,react-native,Javascript,React Native,从props解构在异步函数中不起作用,但如果我使用这个.props,它可以正常工作。 这适用于已经在生产中的react本机应用程序,该应用程序突然开始在2天前返回此错误。 我试着升级巴贝尔使用 但到目前为止还没有成功 如果我改用this.props.getLoginData,它可以正常工作 如果我使用以下函数,它是错误的: yo = async () => { // with async const { getLoginData } = this.props; // error };

从props解构在异步函数中不起作用,但如果我使用这个.props,它可以正常工作。

这适用于已经在生产中的react本机应用程序,该应用程序突然开始在2天前返回此错误。 我试着升级巴贝尔使用

但到目前为止还没有成功

如果我改用this.props.getLoginData,它可以正常工作

如果我使用以下函数,它是错误的:

yo = async () => { // with async
  const { getLoginData } = this.props; // error
};
虽然以下功能工作正常:

yo = () => { // without async
  const { getLoginData } = this.props;
  console.log(getLoginData); // works fine
};
yo = async () => { // with async
  console.log(this.props.getLoginData); // works fine
};
这也很好:

yo = () => { // without async
  const { getLoginData } = this.props;
  console.log(getLoginData); // works fine
};
yo = async () => { // with async
  console.log(this.props.getLoginData); // works fine
};
我希望这两种情况都能正常运行

请克隆并运行以复制此错误。

请在README.md中找到运行项目和环境信息的步骤


注意:您将在控制台中找到错误(按⌘⌥I)

在我的案例中,巴别塔的依赖性似乎是问题的原因

当我查看我的
包lock.json
并搜索
插件转换再生器
时,我会看到版本
7.4.5
。通过将该版本添加到我的
包中,将其锁定到
7.4.4
。json
允许我毫无问题地构建

如果我没有忽略我的
包锁.json
,这个问题会更容易找到

总之


npmi-E@babel/plugin转换-regenerator@7.4.4

我遇到了同样的问题

使用babel 7.4.4版对我没有帮助,但我找到了另一个有效的解决方案-在try-catch-block中包装解构

我仍然不知道为什么会发生这个问题,但我会更新时,我这样做

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

最终,@makenova提供的解决方案成功了(谢谢,伙计!)。 我要做的是移除所有节点模块+包锁,然后运行

npm i -E @babel/plugin-transform-regenerator@7.4.4
那之后呢

npm i
在此之前,我使用了纱线,但是并没有起到作用

更新:

nicolo ribaudo在这里解决了这个问题:


另一种解决方案是强制
再生器转换
使用
~0.13.0
作为

如果您使用的是纱线,请将其添加到package.json中:

  "resolutions": {
    "regenerator-transform": "~0.13.0"
  }
如果您正在使用npm:

  • 将其作为devDependency安装
  • 删除package-lock.json
  • 重新安装依赖项

  • 我有一个异步函数,在解构和保存常量时显示错误:可能未处理的承诺拒绝(id:0):错误:“userOperations”是只读的,这对我有效(更改由常量指定):


    :错误:“getLoginData”是只读的
    似乎您正在尝试为
    getLoginData
    变量重新赋值,为什么变量名与函数名相同?@AZ_u.您是正确的,但两天前相同的代码运行良好,并且在整个应用程序的许多地方都以相同的方式编写,根本无法改变places@AZ_创建回购协议以复制bug@ElphasTori没关系,请克隆回购协议并检查,即使使用不同的名称,问题也是一样的。无论如何,我已经编辑了这个问题。谢谢,虽然不完全一样,但它正在解决一个世博会难题:我有同样的问题,你的解决方案起作用了。谢谢。完美的解决方案!我描述的解决方案是删除并锁定
    插件转换再生器
    的版本,不使用babel
    7.4.4
    。如果您理解这一点,并且只是错误地键入了您尝试的内容,请忽略这一点。欢迎提供指向解决方案的链接,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。