В этом руководстве объясняется процедура устранения ошибок «ReferenceError: требование не определено».
- Как устранить ошибку «ReferenceError: требование не определено»?
- Причина 1: Тип приложения установлен на «Модуль».
- Решение: удалите ключ «Тип».
- Причина 2: Работа в формате «.mjs» » Файл
- Решение: преобразуйте расширение файла в «.cjs».
- Альтернативный подход: используйте заявление ES6 «импорт/экспорт».
Как устранить ошибку «ReferenceError: требование не определено»?
Для импорта внешних или встроенных модулей в проект используются два подхода: « требовать() ” метод или “ Импортировать ключевое слово. Упомянутое « ReferenceError: требование не определено сталкивается, когда пользователь пытается использовать « требовать() ” метод внутри “ ES-модуль ' объем. Обсуждаемая ошибка появляется на консоли в node.js, когда выполняется приведенный ниже код:
Причины возникновения ошибки «Устранить ошибку ReferenceError: требование не определено» и соответствующие решения описаны в разделах ниже.
Причина 1. Тип приложения установлен на «Модуль».
Если ваше приложение отображает упомянутую ошибку, самым простым и долгосрочным решением является изменение файла « пакет.json ' файл. Найдите пару ключ/значение, имеющую « ключ ' из ' тип » и присвоенное значение « модуль ». Это делает среду всего приложения модульной, что предотвращает использование старых « CommonJS » модули и методы. Визуальное представление этой пары ключ/значение выглядит следующим образом:
'тип' : 'модуль' ,
Решение: удалите ключ «Тип».
Решение — удаление « тип «ключ и присвоенное значение из проекта node.js» пакет.json ' файл. Удаление из файла package.json использует область действия модуля ES6 и делает метод require() работоспособным. Теперь, когда тот же код будет выполнен снова, ошибок не возникнет.
Причина 2: Работа в формате «.mjs» » Файл
« .mjs ” — это файл исходного кода модуля JavaScript. Он содержит код внутри среды модуля, а не в « CommonJS », который разбивает код на несколько файлов для лучшей управляемости. « требовать() метод лежит в разделе « CommonJS ». Вот почему метод «require» станет неопределенным при использовании внутри « .mjs ” и приводит к возникновению упомянутой ошибки:
Решение: преобразуйте расширение файла в «.cjs».
Как и в случае с модульным исходным кодом JavaScript, расширение файла « .mjs ' доступен. Продление « .cjs предусмотрено для « CommonJS » модули и свойства. Этот файл не принимает « модульный ” пакеты типа “ Импортировать », но хорошо работает с версиями ES5. В нашем случае изменение расширения файла решит проблему, связанную с « требовать() » метод:
Альтернативный подход: используйте заявление ES6 «импорт/экспорт».
« требовать() метод определен и предоставляется методом « CommonJs » и приемлемо до версии ES5 на JavaScript (ECMAScript 5). Он был опубликован в 2009 году и сейчас устарел, поскольку многие новейшие модули не поддерживают его или не работают должным образом в ES5. Точно так же, как « требовать() метод теперь заменяется более оптимизированным и простым « Импортировать ' заявления. Работа обоих объектов одинакова, но «импорт» имеет преимущество благодаря новейшим технологиям и большей простоте, которые они обеспечивают.
Для стандартных или внешних модулей
В приведенной ниже демонстрации оператор «import» используется в качестве альтернативы методу «require()» для импорта модуля по умолчанию или стороннего модуля:
Импортировать readlineObj от 'линия чтения' ;консоль. бревно ( readlineObj ) ;
После компиляции упомянутого кода та же задача, которую необходимо выполнить « требовать() выполняется метод и метод « ReferenceError: требование не определено » также не появится:
Для модулей, созданных по индивидуальному заказу
« Импортировать Оператор » также используется для «импорта» модулей или функций специальной сборки из других файлов, находящихся в том же или разных каталогах. Функции или переменные из других файлов экспортируются с помощью команды « экспорт ключевое слово. Например, посетите приведенный ниже фрагмент кода, в котором одна функция и случайная величина будут импортированы из другого файла:
приложение.js
константа экспортная переменная '=' «Это руководство предоставлено Linuxhint!» ;константа экспортфункция '=' ( ) => {
консоль. бревно ( экспортная переменная ) ;
} ;
экспорт по умолчанию экспортфункция ;
экспорт {
экспортная переменная
} ;
Объяснение приведенного выше блока кода следующее:
- Во-первых, случайная величина с именем « экспортная переменная ” определена, а стрелочная функция “ экспортфункция() », который печатает созданную «exportVariable» на консоли.
- Ключевые слова « экспорт по умолчанию ' и ' экспорт ” используются для экспорта “ экспортфункция() ' и ' экспортная переменная » объекты из файла.
- Когда этот файл импортируется, экспортированная функция и переменные становятся доступными для использования там.
index.js
«index.js» — это наш дополнительный файл, в который будут импортированы и использоваться экспортированные функция и переменная. Он содержит приведенный ниже код:
Импортировать экспортная функция, { экспортная переменная } от './app.js' ;экспортфункция ( ) ;
консоль. бревно ( экспортная переменная ) ;
В приведенном выше коде « Импортировать Оператор ” используется для импорта стандартного “ экспортфункция() » и переменная « экспортная переменная ' из ' приложение.js ' файл.
Затем оба импортированных объекта вызываются и отображаются на консоли в целях проверки.
Теперь выполните основной « index.js » файл, используя указанную ниже команду:
индекс узла. jsСгенерированные выходные данные показывают, что импортированные элементы работают правильно, не вызывая « ReferenceError: требование не определено ' ошибка:
Вот и все, что касается устранения указанной ошибки.
Заключение
Чтобы решить проблему « ReferenceError: требование не определено » ошибка, удалите « тип ” ключ, имеющий значение “ модуль ' из ' пакет.json » или измените текущее рабочее расширение файла на « .cjs ». Если вы хотите работать с модульной версией ES6, вместо использования « требовать() ” используйте метод “ Импортировать » заявления подхода. В этом руководстве объяснены возможные исправления для решения проблемы « ReferenceError: требование не определено «ошибка» в node.js