Как исправить «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 году