2
votes

I'm trying to migrate from CommonJS (.cjs) to ES Modules (.mjs). To do that I replaced:

const bodyParser = require("body-parser");

with

import * as bodyParser from "body-parser";

within the ES Module.

Now, when try to execute the code:

app.use(bodyParser.urlencoded({
    param: val
}));

I get an error:

app.use(bodyParser.urlencoded({

TypeError: bodyParser.urlencoded is not a function

at file:///…/app.mjs:44:20
at ModuleJob.run (internal/modules/esm/module_job.js:110:37)
at async Loader.import (internal/modules/esm/loader.js:176:24)

I googled for this error and most of the answers reference to a need to require the body-parser component. But in my case I do it already with:

import * as bodyParser from "body-parser";

Any idea why do I still get such issue although the module is imported?

Can it be due to asynchronous nature of ES Modules imports?
Perhaps, should I wait until all imported modules are really imported?

1

1 Answers

1
votes

Try using:

import bodyParser from "body-parser";