Почему ESM выдает синтаксическую ошибку в серверной части react?

#reactjs #import #syntax-error #es6-modules

Вопрос:

Я использую esm, чтобы разрешить использование синтаксиса импорта/экспорта в бэкэнде проекта react вместо require, но, несмотря на это, теперь я получаю ошибку

Ошибка синтаксиса: Невозможно использовать оператор импорта вне модуля

Мой код в index.js:

 require = require("esm")(module);

import userRoutes from './user';
 

И ошибка, которую я получаю при запуске node index.js :

(узел:18560) Предупреждение: Чтобы загрузить модуль ES, установите «тип»: «модуль» в файле package.json или используйте расширение .mjs.
(Используется node --trace-warnings ... для отображения места создания предупреждения)
C:Usershavaldevonline-shopgocodeshop-serverindex.js:5
импортируйте маршруты пользователей из ‘./user’;

Ошибка синтаксиса: Невозможно использовать оператор импорта вне модуля

(Я установил esm с помощью npm i esm).

Есть ли какая-то причина, по которой esm не принимает импорт?

Комментарии:

1. Вы пробовали это сделать? set "type": "module" in the package.json or use the .mjs extension.

2. Нет, у меня нет «типа»: «модуль» в package.json, так как я использую синтаксис require в некоторых других частях серверной части — может ли это быть проблемой? И если я изменю расширение .js на .mjs в обоих файлах (включая index.js) или только user.js?

3. я проверил npm README esm. npmjs.com/package/esm похоже, вам не хватает второго. модуль.экспорт = требуется(«./main.js»)

4. Я попытался добавить module.exports = require(«./маршруты/пользователь»); после require(«esm»)(модуль) (у меня нет main.js, Я называю это внутри index.js) но все равно получаю ту же ошибку

5. как вы запускаете проект…вы должны запустить его с помощью esm node-r your_file.js кстати, вы упоминаете проект nodejs, а не реагируете? это для nodejs, верно?

Ответ №1:

 //Check the order of import. 

import userRoutes from './user';

const requiredModule = require("esm")(module);