Skip to content

Commit 96ce8bb

Browse files
Add new LOWCODER_NODE_REQUEST_SIZE_LIMIT to handle nodejs body size.
Currently, if we upload a file more than 1 MB, there is an error in the backend, so to fix this, I have added a new env var: PayloadTooLargeError: request entity too large at readStream (/lowcoder/node-service/app/node_modules/raw-body/index.js:163:17) at getRawBody (/lowcoder/node-service/app/node_modules/raw-body/index.js:116:12) at read (/lowcoder/node-service/app/node_modules/body-parser/lib/read.js:79:3) at jsonParser (/lowcoder/node-service/app/node_modules/body-parser/lib/types/json.js:138:5) at /lowcoder/node-service/app/build/server.js:43:46 at newFn (/lowcoder/node-service/app/node_modules/express-async-errors/index.js:16:20) at Layer.handle [as handle_request] (/lowcoder/node-service/app/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/lowcoder/node-service/app/node_modules/express/lib/router/index.js:328:13) at /lowcoder/node-service/app/node_modules/express/lib/router/index.js:286:9 at Function.process_params (/lowcoder/node-service/app/node_modules/express/lib/router/index.js:346:12) at next (/lowcoder/node-service/app/node_modules/express/lib/router/index.js:280:10) at urlencodedParser (/lowcoder/node-service/app/node_modules/body-parser/lib/types/urlencoded.js:103:7) at newFn (/lowcoder/node-service/app/node_modules/express-async-errors/index.js:16:20) at Layer.handle [as handle_request] (/lowcoder/node-service/app/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/lowcoder/node-service/app/node_modules/express/lib/router/index.js:328:13) at /lowcoder/node-service/app/node_modules/express/lib/router/index.js:286:9 { expected: 338, length: 338, limit: 120, type: 'entity.too.large' }
1 parent 509405d commit 96ce8bb

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

server/node-service/src/server.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import apiRouter from "./routes/apiRouter";
1010
import systemRouter from "./routes/systemRouter";
1111
import cors, { CorsOptions } from "cors";
1212
import bodyParser from "body-parser";
13+
const bytes = require("bytes");
14+
const requestSizeLimitStr = process.env.LOWCODER_NODE_REQUEST_SIZE_LIMIT || "50mb";
15+
const requestSizeLimitBytes = bytes(requestSizeLimitStr);
16+
1317
collectDefaultMetrics();
1418

1519
const prefix = "/node-service";
@@ -35,17 +39,18 @@ router.use(express.urlencoded({ extended: false }));
3539

3640
/** Custom middleware: use raw body for encrypted requests */
3741
router.use((req, res, next) => {
38-
if (req.headers["x-encrypted"]) {
39-
bodyParser.text({ type: "*/*" })(req, res, next);
40-
} else {
41-
bodyParser.json()(req, res, next);
42-
}
42+
if (req.headers["x-encrypted"]) {
43+
body_parser_1.default.text({ type: "*/*", requestSizeLimitStr })(req, res, next);
44+
}
45+
else {
46+
body_parser_1.default.json({ requestSizeLimitStr })(req, res, next);
47+
}
4348
});
4449

4550
/** Takes care of JSON data */
4651
router.use(
4752
express.json({
48-
limit: 1024 * 1024 * 50, // 50 MB
53+
limit: requestSizeLimitBytes
4954
})
5055
);
5156

0 commit comments

Comments
 (0)