yahoo / yahoo/serialize-javascript
Version 3.1.0 is not working in React-Native when is not in debugging mode or when is generating release
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 2.9k
- Forks
- 215
- Ø Merge
- 1 T. 12 Std.
- Gemergte PRs (30 T.)
- 2
Beschreibung
Hello, I'm using serialize-javascript in React-Native instead of JSON.stringify function. The version 3.1.0 is not working in React-Native when the debugger is off or in the release apk (because there is no debugger).
The issue is:
Error: Secure random number generation is not supported by this browser. Use Chrome, Firefox or Internet Explorer 11.
Reproduce:
- In React-Native project install with npm, npx or yarn the package serialize-javascript.
- Create a serialize function:
import serializeJs from 'serialize-javascript';
...
const clearArrayUndefinedValues = (array) => {
try {
if (!Array.isArray(array))
throw new Error('Invalid argument. Must be an array.');
const filteredArr = array.reduce((arr, current) => {
if (typeof current === 'object' && current !== null) {
if (Array.isArray(current))
return [...arr, clearArrayUndefinedValues(current)];
// eslint-disable-next-line no-use-before-define
return [...arr, clearObjectUndefinedValues(current)];
} else if (current !== undefined) return [...arr, current];
return arr;
}, []);
return filteredArr;
} catch (error) {
console.log(
'##\t Error log in clearArrayUndefinedValues on app/shared/utils.js ->',
error
);
return null;
}
};
const clearObjectUndefinedValues = (object) => {
try {
if (typeof object !== 'object')
throw new Error('Invalid argument. Must be an object.');
if (object === null) throw new Error('Invalid argument. Must not be null.');
const filtered = Object.keys(object).reduce((obj, key) => {
const { [key]: current } = object;
if (typeof current === 'object' && current !== null) {
if (Array.isArray(current))
return { ...obj, [key]: clearArrayUndefinedValues(current) };
return { ...obj, [key]: clearObjectUndefinedValues(current) };
} else if (current !== undefined) return { ...obj, [key]: current };
return obj;
}, {});
return filtered;
} catch (error) {
console.log(
'##\t Error log in clearObjectUndefinedValues on app/shared/utils.js ->',
error
);
return null;
}
};
export const serialize = (object) => {
try {
if (typeof object !== 'object')
throw new Error('Invalid argument. Must be an object.');
if (object === null) throw new Error('Invalid argument. Must not be null.');
if (Array.isArray(object))
return serializeJs(clearArrayUndefinedValues(object));
return serializeJs(clearObjectUndefinedValues(object));
} catch (error) {
console.log('##\t Error log in serialize on app/shared/utils.js ->', error);
return null;
}
};
- Use a serialize function in any place of your code:
import { serialize } from '../shared/utils';
...
const JSONToObject = serialize(data);
My set is:
MacOs 10.15.5
i7 2.2Ghz
16GB
Running app in simulators:
iPhone 11 os 13.5
Pixel 3 os Android API 29.
Chrome version:
83.0.4103.61 64 bits
The previous version (3.0.0) working well. There are a prevision/way to fix this to work without debugger?
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den gemeldeten Fehler in einem React-Native-Release-Build mit serialize-javascript 3.1.0 zu reproduzieren, und vergleiche anschließend dessen Verhalten mit Version 3.0.0. Verfolge die Ursache des Fehlers bei der Erzeugung sicherer Zufallszahlen und bestätige das Ergebnis mit einem React-Native-Lauf ohne Debugging; abgeschlossen ist die Aufgabe, wenn die Serialisierung ohne den Debugger funktioniert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, react-native
- Bereich
- mobile
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100