Импортированный общий JS (CJS) в модуль ES (M JS) приводит к ошибке «Ошибка типа: модуль не является функцией» - PullRequest
1 голос
/ 28 марта 2020

Я пытаюсь перейти с Common JS (. cjs) на модули ES (.m js). Для этого я заменил:

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

на

import * as bodyParser from "body-parser";

в модуле ES.

Теперь, когда попробуем выполнить код:

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

Я получаю сообщение об ошибке:

app.use (bodyParser.urlencoded ({

TypeError: bodyParser.urlencoded не является функцией

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)

Я погуглил эту ошибку, и большинство ответов ссылаются на необходимость требовать компонент body-parser. Но в моем случае я делаю это уже с:

import * as bodyParser from "body-parser";

Любая идея, почему я по-прежнему возникает такая проблема, хотя модуль импортируется?

Может ли это быть связано с асинхронной природой импорта модулей ES?
Возможно, следует подождать, пока все импортированные модули действительно будут импортированы?

1 Ответ

1 голос
/ 28 марта 2020

Попробуйте использовать:

import bodyParser from "body-parser";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...