React Native 为什么我的应用程序在调试模式下工作完美,而在发布模式下崩溃?

63lcw9qa  于 2023-02-05  发布在  React
关注(0)|答案(3)|浏览(142)

嘿,我是新的React原生我创建了一个应用程序,一切工作完美,当我调试它,但当我建立它崩溃在屏幕上,给我这个错误
2019年7月5日12:29:53.403 21905 - 21925/?E/安卓系统运行时间:致命异常:mqt本地模块进程:网页搜罗,PID:21905。Javascript异常:com.foo小时@2:1448天@2:868天@714:16712时间@714:17738年@714:16801不适用@713:2042时间@90:30120或@90:45887不适用@90:72881时间@90:73371时间@90:80972时间@90:80310使用者@90:83367日期@90:13673时间@90:13846接收触摸次数@90:14605值@28:3311@28:822值@28:2565值@28:794值@- 1 Requiring unknown module "./locale/fr"., stack: h@2:1448 d@2:868 Dt@714:16712 Tt@714:17738 Yt@714:16801 n@713:2042 Sn@90:30120 Or@90:45887 na@90:72881 ra@90:73371 Oa@90:80972 Wa@90:80310 Ue@90:83367 De@90:13673 We@90:13846 receiveTouches@90:14605 value@28:3311 @28:822 value@28:2565 value@28:794 value@-1

at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
    at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
    at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
    at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
    at android.os.Looper.loop(Looper.java:203)
    at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
    at java.lang.Thread.run(Thread.java:761)

这是我的代码有两个地方当我与时刻在这里第一个:

import 'moment/locale/fr';
import moment from 'moment';

this.state = { 
      date: moment().locale('fr').format('dddd HH:mm');
}
and set the state to a Text

第二个是这个类

import 'moment/locale/fr';
import moment from 'moment';

componentDidMount() {
   console.log(this.props.hours[0].openAt); 
   const date = new Date();
   const day = date.getDay();
   moment.locale('fr');
   for (let i = 0; i < this.props.hours.length; i++) {
       if (this.props.hours[i].day === day) {
           const format = 'hh:mm';
           const time = moment(date, format);
           const beforeTime = moment(this.props.hours[i].openAt, format);
            const afterTime = moment(this.props.hours[i].closeAt, format);

           if (time.isBetween(beforeTime, afterTime)) {
             this.setState({
                 ouvert: true
             });
           } else {
               this.setState({
                   ouvert: false
               });
           }
       }
   }
   }
dtcbnfnu

dtcbnfnu1#

像这样解决它:(在我的情况下,我有英语和意大利语本地化启用)
将本地本地化文件导入为:

import * as en from "./locale/en.json";
import * as it from "./locale/it.json";

积分力矩局部化

var moment = require("moment");
var itLocale = require("moment/locale/it");
var enLocale = require("moment/locale/en-gb");

moment.locale("en", enLocale);
moment.locale("it", itLocale);

现在可以在调试/发布模式下工作。

idfiyjo8

idfiyjo82#

我也面临着这个问题,并通过将moment的版本降级到2.18.1来修复它。
如果使用moment-timezone,则需要在package.json中添加以下内容

"resolutions": {
    "moment-timezone/moment": "2.18.1"
  },

参考:https://github.com/moment/moment/issues/4216

ut6juiuv

ut6juiuv3#

从React Native 0.60升级到0.63并使用最新版本的Moment.js(2.29.4)时出现此错误。Moment.js在除utils文件(尤其是. fromNow()方法)之外的所有组件中运行良好
该错误是由于使用moment.locale('fr', {})而不是moment.updateLocale('fr', {})来扩展法语区域设置而导致的。
切换到updateLocale后,问题得到解决。

相关问题