Comments (7)
Ah, I see. The issue is actually not in raw-body, but in that uwebsockets lib. It will utf-8 decode the body before it sends it to raw-body:
This will of course mean any binary data will end up corrupted with that uwebsockets lib. It looks like that is why raw-body is unexpectedly getting a decoded string instead of Buffer objects like would happen with the actual Node.js http objects.
I would suggest fixing at the root cause instead of raw-body, as it would also fix corruption of non-utf-8 bodies too.
from body-parser.
Hi, and sorry you are having an issue. There isn't enough information to be able to diagnose your issue. Please, can you provide the exact method and details to reproduce this issue? Specifically the exact details to send the request.
from body-parser.
Looking at your code snippet, it appears that you are using the HTTP GET method to retrieve a user by email, but you are passing the email as part of the request body. The HTTP GET method does not have a request body, so this is likely causing the issue.
To fix this, you can pass the email as a query parameter instead of in the request body. Here's an updated version of your code:
this.router.get('/by-email', async (req, res) => {
try {
const { email } = req.query;
const data = await new userController().getOneUser(email);
res.status(200).send(data);
} catch (error) {
res.send(error);
}
});
from body-parser.
Just an FYI, I was getting the same error using this lib without express.
from body-parser.
Thank you for the update and sorry we have been unable to fix. Unfortunately without a reproducable example and code to demo we don't know what the problem is. You are always welcome to make a pull request qoth a fiz, or if you can provide a reproducable example we can reopen this issue and figure out what is happening and fix.
from body-parser.
Hey @dougwilson
Looks like the issue was with the raw-body
dependency.
For my use, I've since patched the package with a fix
We started sporadically getting these errors since switching to uWebSockets.js with https://github.com/colyseus/uWebSockets-express, usually when the req body contained any chars that were larger than a single byte.
This is because chunks were measured via their char length instead of bytes...
I recognise that this isn't a documented canonical use of the library so your prerogative to determine what's best.
from body-parser.
Agreed @dougwilson, thanks for picking up on that!
This was merely a quick fix to bring back prod services after we found out about the regression affecting all requests from a particular client, until I could investigate further.
Agree that patching uwebsockets-express would be far more apposite so will get to that shortly...
from body-parser.
Related Issues (20)
- bodyParser is deprecated, error HOT 1
- bodyparser.json() shown as deprecated? (question) HOT 7
- pass options to qs thru urlencoded? HOT 4
- Cannot catch SyntaxError when user provides invalid JSON in body and content-type: application/json HOT 3
- Support for content-encoding: deflate raw HOT 7
- req.body could not be accessed when send as form data, but works fine with JSON HOT 3
- Pass custom parameters to `qs` HOT 3
- Update iconv-lite to latest 0.6.3 HOT 7
- support for ndjson
- Regular Expression Denial of Service (ReDoS) in [email protected] HOT 3
- Update `debug` dependency (memory leak leading to vulnerability) HOT 1
- api calls made with invalid json HOT 5
- Add support for removing body parser limit HOT 8
- How to handle content-type mismatch? HOT 1
- CVE-2017-20165 - debug HOT 2
- Issue HOT 1
- Debug package version in body parser showing security vulnerability HOT 10
- fails silently if the json has extra whitespace HOT 2
- json middleware does not work on content types with a `+` HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from body-parser.