Как исправить «Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля»

Вы получаете сообщение об ошибке «Невозможно использовать оператор импорта вне модуля» при импорте чего-либо?

Вот полное сообщение об ошибке: «Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля».

Основная причина, по которой вы получаете сообщение «Uncaught ReferenceError: ms is notdefined», заключается в том, что модули ограничены областью действия.

Поскольку вы загружаете библиотеку, используя нативные модели, «ms» недоступен в теге скрипта, поскольку он не находится в глобальной области.

Другими словами, вы пытаетесь запустить файл независимо.

Согласно официальной документации Node.js, операторы импорта разрешены только в модулях ES.

Следовательно, чтобы исправить «Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля», вам нужно заставить Node.js рассматривать ваш файл как модуль ES.

Сообщение об ошибке может появляться в WordPress, TypeScript, JavaScript и т. д.

Прежде чем пытаться это исправить, убедитесь, что у вас установлена ​​последняя версия Node.js.

После этого попробуйте использовать следующие методы:

Способ 1: добавьте type=”module” в тег скрипта

Добавьте type=”module” в тег скрипта.

Это будет означать, что это модуль JavaScript.

До (неверно):

<script src="https://www.followchain.org/cannot-use-import-statement/src/main.js"></script>

После (правильно):

<script type="module" src="https://www.followchain.org/cannot-use-import-statement/src/main.js"></script>

Если вы получаете ошибку CORS из-за этого, вам нужно добавить «Access-Control-Allow-Origin: *» в свои заголовки.

Способ 2: добавьте type=”module” в файл package.json

Добавьте «тип»: «модуль» в ближайший родительский файл package.json.

Это гарантирует, что файлы .js и .mjs обозначаются как модули ES.

Однако, если вы используете файлы .ts, вам нужно использовать «nodemon» вместо «node».

{
  // ...
  "type": "module",
  // ...
}

Способ 3: заменить «импорт» на «требовать»

Попробуйте заменить «import {parse} from ‘node-html-parser’;» с «const parse = require(‘node-html-parser’)» или «const parse = require(‘node-html-parser’);».

// import { parse } from 'node-html-parser'; 
const parse = require('node-html-parser');

Способ 4: ссылочный типORM

Вам нужно использовать «dist» и «js» вместо «src» и «ts».

До (неверно):

   "entities": [
      "src/db/entity/**/*.ts",
   ],

После (правильно):

   "entities": [
      "dist/db/entity/**/*.js", 
   ],

Способ 5: заменить «esnext» на «commonjs»

Если вы столкнулись с ошибкой в ​​TypeScript, вам необходимо сделать следующее:

Вместо:

    "target": "esnext",
    "module": "esnext",

Использовать:

    "target": "esnext",
    "module": "commonjs",

Заключение

Ошибка «Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля» — одна из самых распространенных ошибок, с которыми сталкиваются разработчики.

На StackOverflow его просмотрели более 1,7 миллиона раз.

В большинстве случаев сообщение об ошибке возникает из-за того, что вы не указали type=”module” внутри тега script.

Добавление type=module означает, что это модуль JavaScript.

дальнейшее чтение

Как исправить «Объект типа ‘int’ не имеет len ()»

Как исправить «python: не удается открыть файл «manage.py»: [Errno 2] Данный файл или каталог отсутствует”

Лучший реферальный код Binance в 2022 году

  • April 4, 2023