В этой статье подробно обсуждаются причины возникновения этой ошибки и способы ее устранения.
Как устранить ошибку «требование не определено» в JavaScript/Node.js?
Ошибка ссылки «require is not Found» возникает, когда функция require() обнаруживается в файле JavaScript, который должен был выполняться в веб-браузере, а не в среде Node.js.
Что такое функция require()?
Функция require() имеет глобальную область действия и предоставляется Node.js. Он загружает и запускает модули в приложении Node.js. Многие браузеры не поддерживают Node.js, поэтому функция require() в них недоступна.
Когда происходит эта ошибка?
Эта ошибка обычно возникает, когда в обоих браузерах используется JavaScript вместе с Node.js. Ошибка может возникнуть тремя способами:
- Когда функция require() используется в среде браузера.
- Когда функция require() используется в Node.js и файле package.json, тип устанавливается как «модуль».
- Когда функция require() используется в Node.js, файлы имеют расширение .mjs.
Использование синтаксиса const « myFile = require('./мой-файл') » в веб-среде выдаст ошибку, которая выглядит следующим образом:
Давайте обсудим различные решения для устранения этой ошибки.
Случай 1. Ошибка в среде браузера.
Функция require() работает специально в Node.js. Большинство браузеров совместимы с Node.js, поэтому они не поддерживают функцию require(). Модуль импорта и экспорта модуля ES6 устраняет ошибку «ReferenceError require is not определено». Вот пример кода, который показывает, как это можно сделать:
ДОКТИП html >< тело >
< тип сценария '=' 'модуль' источник '=' 'индекс.js' >/ сценарий >
< тип сценария '=' 'модуль' источник '=' 'файл.js' >/ сценарий >
тело >
HTML >
Index.js загружается первым, чтобы его функциональные возможности можно было использовать в file.js.
файл index.js
index.js определяет функциональный продукт и переменные x и y:
продукт функции экспорта ( а, б ) {возвращаться а * б ;
}
экспорт константа '=' 10 ;
экспорт константа и '=' 'ТЕЙЛОР'
файл.js
Функциональные возможности файла index.js можно использовать в другом файле js с именем file.js. File.js выглядит так:
Импортировать { продукт, х, у } от './index.js' ;консоль. бревно ( продукт ( 10 , 5 ) ) ; // отобразит 50
консоль. бревно ( Икс ) ; // отобразит 10
консоль. бревно ( и ) ; // отобразит 'ТЕЙЛОР'
Выход
Следующий вывод показывает, как ошибку «требование не определено» в среде браузера можно удалить с помощью модуля импорта-экспорта ES6:
Случай 2: Ошибка при работе в Node.js
В файле package.json при установке свойства type с помощью модуля value возникает эта ошибка. Это также может произойти, если функция require() используется в файле с расширением .mjs.
Эту ошибку можно устранить, если удалить свойство типа, установленное для модуля, и любой файл с расширением .mjs переименовывается в .js.
//package.json{
// удаляем свойство типа, установленное для модуля, чтобы использовать require()
'тип' : 'модуль' ,
}
файл index.js
Файл index.js определяет функцию «product» и переменные x и y с областью действия переменной. Вот как будет выглядеть файл index.js:
функциональный продукт ( а, б ) {возвращаться а * б ;
}
Глобальный. Икс '=' 13 ;
Глобальный. и '=' 'быстрый' ;
модуль. экспорт '=' {
продукт,
} ;
файл.js
Он берет функциональное произведение из JS-файла index.js с помощью ключевого слова require(). Файл file.js будет выглядеть так:
константа { продукт } '=' требовать ( './index.js' ) ;консоль. бревно ( продукт ( 10 , 9 ) ) ; // отобразит 90
консоль. бревно ( Икс ) ; // отобразит 13
консоль. бревно ( и ) ; // отобразит 'быстро'
Выход
В выводе показано, как можно устранить ошибку «Требование не найдено», удалив свойство типа, установленного в модуль, из файла package.json:
То, что нужно запомнить
- Синтаксис модуля ES6 для импорта модуля требует указания расширения файла модуля. JavaScript должен знать тип файла для его правильной обработки.
- Модуль ES6 нельзя использовать одновременно с функцией require().
Заключение
Использование синтаксиса модуля ES6 в браузере решает проблему «требование не определено», иначе фрагмент кода придется запускать в Node.js. Ошибка возникает, когда функция require() используется в браузере. В этой статье обсуждалось, как можно решить проблему «требование не определено» на примере.