Error: Request has not been opened
Willham12 opened this issue ยท 18 comments
Same issue
Same problem
any solution?
same problem here
i fixed it by removing the line that throw Error.
Go to react-native>Libraries>Network>XMLHttpRequest.js Line 517
- throw new Error('Request has not been opened');
+ console.warn('Request has not been opened');
then patch-package react-native
that's all
@FaridSafi : Any update? When this will be fixed inside the package?
Update on this? Experiencing the same issue, is the solution really to remove the error logic itself?
My solution
I am not use lib, I use url from google
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &language=fr &types=geocode &key=YOUR_API_KEY
https://developers.google.com/maps/documentation/places/web-service/autocomplete
i fixed it by removing the line that throw Error.
Go to react-native>Libraries>Network>XMLHttpRequest.js Line 517
- throw new Error('Request has not been opened'); + console.warn('Request has not been opened');
then patch-package react-native that's all
I recommend instead modifying GooglePlacesAutocomplete.js, right before request.send()
on line 570 add an if-gate to catch any unopened requests before calling request.send(). The error is being caused by request.send() being called on a request that is not yet opened. You can check for this case and only send if the request is opened, or readyState === 1, with:
if (request.readyState === 1) {
request.send();
} else {
console.warn('google places autocomplete: attempt to send unopened request failed');
}
This way you at least don't have to alter the logic for all XMLHttpRequest(which I am personally uncomfortable with), just the offending GooglePlacesAutocomplete logic.
I did not spend time looking into why/how a single request is failing to set readyState = 1. Someone else may dig into that and solve the overall issue. On my end, only 1 request out of many was failing to set readyState = 1, causing the 'Request has not been opened' error. This only occurs after the user navigates away from the screen that contains the GooglePlacesAutocomplete component/import.
Go ahead and add a console log right before line 570 in GooglePlacesAutocomplete.js and see what you get, make sure to log out any request where request.readyState !== 1 so you catch requests that aren't open when they should be. If you're getting the error from a different line in GooglePlacesAutocomplete, I recommend doing the same console logging wherever the nearest request.send() is to your error, you may be able to find a solution to your problem.
Hope this helps, happy coding.
Setting debounce to more than 0 (eg. debounce={300}) fixed the issue for me.
Setting debounce to more than 0 (eg. debounce={300}) fixed the issue for me.
Can you explain where to set debounce please !
Setting debounce to more than 0 (eg. debounce={300}) fixed the issue for me.
Can you explain where to set debounce please !
You can put the prop in GooglePlacesAutocomplete
But it doesn't work, still throws an error.
wrapping [ request.send(); ] everywhere with try catch block solved my crash in release.