gpt4 book ai didi

ios - React Native 应用程序在 Debug模式下工作,但在 iOS 上不工作 Release模式

转载 作者:可可西里 更新时间:2023-11-01 03:35:22 26 4
gpt4 key购买 nike

我有一个关于 React Native 的应用程序。 Debug模式适用于 ios。但是 Release模式不起作用。我尝试更改优化级别,但没有帮助。我没有看到任何错误的问题。只是不工作一些功能。而且我无法调试应用程序的发布版本。如何解决这个问题?

作为我们在 saga 之后添加的最后一个更改,当我们删除调用此 saga 时它会起作用

import { select, take, takeLatest, call, put, fork, race } from 'redux-saga/effects';
import R from 'ramda';
import V from 'o-validator';
import * as actionCreators from './actions';
import { redirectTo, showModalError, showModal, showOtp, closeOtp, errorOtp, loader, keychainSet } from '../../../actions/app-actions';
import { storeSession, refreshSession } from '../../../actions/session-actions';
import I18n from 'react-native-i18n';
import {
KEYCHAIN_RESET,
KEYCHAIN_GET,
KEYCHAIN_RESULT
} from '../../../constants/action-types';


import { validatePassword, createCustomError, serverError } from '../../../services/utils';

const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms))


export function * ChangePasswordWatcher( api, action ) {
yield fork( ChangePasswordFormWatcher, api, action );
}

export function * ChangePasswordFormWatcher(api, action){
while (true) {
yield race({
changePasswordProcess: call(ChangePasswordStart, api),
cancel: take(['CHANGE_PASSWORD_PASSWORD_RESET'])
});
//yield put( loader('hide') );
yield put( loader('hide') );


}
}




/**
* Change Password Sagas starter
*
* @param {function} api - api object
* @param {object} action - action from dispatch
* @returns
*/
export function * ChangePasswordStart(api, action) {
try {
while (true) {
const { formData } = yield take('CHANGE_PASSWORD_FORM_SUBMIT');
let oldPassword = formData.oldPassword;
let newPassword = formData.newPassword;
let newPasswordConfirmation = formData.newPasswordConfirmation;


yield put({
type: 'CHANGE_PASSWORD_FORM_VALID'
});

const validate = validateForm( 'changePasswordForm', formData );
if ( validate.valid ) {
yield put( actionCreators.submitChangePasswordFormValid() );
yield put( loader('show') );


let newPasswordResponse = yield call( api.setChangePassword, oldPassword, newPassword);
yield put( loader('hide') );
if ( !newPasswordResponse.ok ) {

let errors = serverError(newPasswordResponse);
console.log(errors);
console.log('errors newPasswordResponse');

yield put( showModalError({ error: errors }));
yield put( actionCreators.submitNewPasswordFormFailed( errors ) );

// return false;
}
else {


yield put({
type: KEYCHAIN_GET,
// resultAction: ''
});


const keychain = yield take(KEYCHAIN_RESULT);

// Save to Keychain
yield put( keychainSet({
login: keychain.login || false,
password: keychain.password || false
}) );

// final screen
yield put( redirectTo('thankyou') );
yield call( delay, 300 );
yield put( actionCreators.changePasswordResetState() );
}

}
else {
yield put( showModalError({ error: validate.errors }));
yield put( actionCreators.submitChangePasswordFormFailed( validate.errors ));
yield put( actionCreators.changePasswordFailed() );


// yield put( actionCreators.submitFinFormFailed( ret.errors ) );
// yield put( actionCreators.registrationFailed());
}
// Reset login
// yield call( delay, 300 );
// yield put( actionCreators.resetState() );

}

} catch (e) {
console.log(e);
}


}




export function validateForm( formKey, formData ) {
let
ret = {
valid: true,
errors: false
},
schema: {};

switch ( formKey ) {
case 'changePasswordForm':
schema = {
oldPassword: V.required( validatePassword ),
newPassword: V.required( validatePassword ),
newPasswordConfirmation: V.required( R.equals( formData.newPassword ) )
};
break;

default:
break;
}

ret.valid = V.validate( schema, formData );

if ( !ret.valid ) {
ret.errors = V.getErrors( schema, formData );
ret.errors = R.zipObj( R.pluck('property', ret.errors), ret.errors );
}

console.log('isValid: ' + ret.valid.toString());

return ret;
}

评论所有 Console.log 语句没有帮助

import { select, take, takeLatest, call, put, fork, race } from 'redux-saga/effects';
import R from 'ramda';
import V from 'o-validator';
import * as actionCreators from './actions';
import { redirectTo, showModalError, showModal, showOtp, closeOtp, errorOtp, loader, keychainSet } from '../../../actions/app-actions';
import { storeSession, refreshSession } from '../../../actions/session-actions';
import I18n from 'react-native-i18n';
import {
KEYCHAIN_RESET,
KEYCHAIN_GET,
KEYCHAIN_RESULT
} from '../../../constants/action-types';


import { validatePassword, createCustomError, serverError } from '../../../services/utils';

const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms))


export function * changePasswordScreenWatcher( api, action ) {
yield fork( ChangePasswordFormWatcher, api, action );
}

export function * ChangePasswordFormWatcher(api, action){
while (true) {
yield race({
changePasswordProcess: call(ChangePasswordStart, api),
cancel: take(['CHANGE_PASSWORD_PASSWORD_RESET'])
});
//yield put( loader('hide') );
yield put( loader('hide') );


}
}




/**
* Change Password Sagas starter
*
* @param {function} api - api object
* @param {object} action - action from dispatch
* @returns
*/
export function * ChangePasswordStart(api, action) {
try {
while (true) {
const { formData } = yield take('CHANGE_PASSWORD_FORM_SUBMIT');
let oldPassword = formData.oldPassword;
let newPassword = formData.newPassword;
let newPasswordConfirmation = formData.newPasswordConfirmation;


yield put({
type: 'CHANGE_PASSWORD_FORM_VALID'
});

const validate = validateForm( 'changePasswordForm', formData );
if ( validate.valid ) {
yield put( actionCreators.submitChangePasswordFormValid() );
yield put( loader('show') );


let newPasswordResponse = yield call( api.setChangePassword, oldPassword, newPassword);
yield put( loader('hide') );
if ( !newPasswordResponse.ok ) {

let errors = serverError(newPasswordResponse);
//console.log(errors);
//console.log('errors newPasswordResponse');

yield put( showModalError({ error: errors }));
yield put( actionCreators.submitNewPasswordFormFailed( errors ) );

// return false;
}
else {


yield put({
type: KEYCHAIN_GET,
// resultAction: ''
});


const keychain = yield take(KEYCHAIN_RESULT);

// Save to Keychain
yield put( keychainSet({
login: keychain.login || false,
password: keychain.password || false
}) );

// final screen
yield put( redirectTo('thankyou') );
yield call( delay, 300 );
yield put( actionCreators.changePasswordResetState() );
}

}
else {
yield put( showModalError({ error: validate.errors }));
yield put( actionCreators.submitChangePasswordFormFailed( validate.errors ));
yield put( actionCreators.changePasswordFailed() );


// yield put( actionCreators.submitFinFormFailed( ret.errors ) );
// yield put( actionCreators.registrationFailed());
}
// Reset login
// yield call( delay, 300 );
// yield put( actionCreators.resetState() );

}

} catch (e) {
//console.log(e);
}


}




export function validateForm( formKey, formData ) {
let ret = {
valid: true,
errors: false
};

switch ( formKey ) {
case 'changePasswordForm':
schema = {
oldPassword: V.required( validatePassword ),
newPassword: V.required( validatePassword ),
newPasswordConfirmation: V.required( R.equals( formData.newPassword ) )
};
break;

default:
break;
}

ret.valid = V.validate( schema, formData );

if ( !ret.valid ) {
ret.errors = V.getErrors( schema, formData );
ret.errors = R.zipObj( R.pluck('property', ret.errors), ret.errors );
}

//console.log('isValid: ' + ret.valid.toString());

return ret;
}

最佳答案

根据提供的信息,您似乎在调试发布 模式之间切换时加载了不同的包。

确保您将应用配置为 use a static bundle在 Release模式下。

然后您的应用将在两种模式下呈现相同的包,并且行为可能与您预期的一样。

关于ios - React Native 应用程序在 Debug模式下工作,但在 iOS 上不工作 Release模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52247090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com