fix: SyntaxError: JSON.parse: bad parsing #22837
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
There was a bug in
packages/react-fetch/src/ReactFetchNode.js
.It's the usage of
JSON.parse()
.SyntaxError: JSON.parse: bad parsing
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse
How did you test this change?
There was a bug in
packages/react-fetch/src/ReactFetchNode.js
.It's the usage of
JSON.parse()
.JSON.parse()
throws SyntaxError in the following example.For example:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse
This was discovered when testing the
reactjs/server-components-demo
.fix: JSON.parse fails in react-fetch reactjs/server-components-demo#55
I created a test code. When I ran it, it threw a
SyntaxError
.I used the test code
handles different paths
as a reference.The URL for fetch is the concatenation of the
serverEndpoint
of the test code and the random stringbanana
.http://localhost:64944/banana
Since it is not an
Invalid URL
, the status of the response will be as follows.However, the response will not be in json format, because I have specified a random string
banana
.The body of the response will be a string in which the following conditions are true.
Command to run the test code:
Results:
I modified
json()
as follows. I addedcatch { }
.If an Error throws, get it with
text()
.Passed the test.