Как устранить ошибку «требование не определено» в JavaScript/Node.js

Kak Ustranit Osibku Trebovanie Ne Opredeleno V Javascript Node Js



В процессе программирования мы можем столкнуться с различными ошибками, такими как синтаксические ошибки или ошибки времени выполнения. Эталонная ошибка — это ошибка времени выполнения. Ошибка ссылки возникает, когда была сделана ссылка на неинициализированную переменную или переменную, которая не существует в текущей области видимости. Ошибка «требование не определено» — это ссылочная ошибка, указывающая на наличие проблемы с ключевым словом «требование».

В этой статье подробно обсуждаются причины возникновения этой ошибки и способы ее устранения.

Как устранить ошибку «требование не определено» в 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() используется в браузере. В этой статье обсуждалось, как можно решить проблему «требование не определено» на примере.