Paano Lutasin ang 'referenceerror require is not defined' Error?

Paano Lutasin Ang Referenceerror Require Is Not Defined Error



Ang Node.js ay wala sa sarili nito, ang pagkakaroon nito ay nakasalalay sa mga module at pamamaraan na ibinigay ng bawat module. Upang gumana sa mga module na ito, dapat muna itong i-install ng developer at pagkatapos ay i-import ito sa loob ng kasalukuyang gumaganang file. Upang mag-import ng mga module, mayroong dalawang paraan na partikular na naka-link sa bersyon ng JavaScript na ginagamit ngayon ng developer o kung saan gustong buuin ng may-ari ng application. Habang nag-i-import ay may pagkakataong harapin ang maraming error at ang isang sikat at pinakakaraniwang error na nauugnay sa ' nangangailangan() ” paraan ay inilalarawan at niresolba.

Ipinapaliwanag ng gabay na ito ang pamamaraan para sa paglutas ng mga error na 'ReferenceError: require is not defined'.

Paano Lutasin ang Error sa 'ReferenceError: require is not defined'?

Upang mag-import ng panlabas o built-in na mga module sa proyekto, dalawang diskarte ang ginagamit, ang mga ito ay gumagamit ng ' nangangailangan() 'paraan o' angkat ” keyword. Ang nabanggit na ' ReferenceError: hindi tinukoy ang pangangailangan ' ay nahaharap kapag sinubukan ng isang gumagamit na gamitin ang ' nangangailangan() 'paraan sa loob ng' ES module ” saklaw. Ang tinalakay na error ay lilitaw nang ganito sa console sa node.js kapag ang nakasaad sa ibaba na code ay naisakatuparan:









Ang mga dahilan para sa paglitaw ng error na 'Resolve 'ReferenceError: require is not defined' at ang kanilang mga kaukulang solusyon ay ipinaliwanag sa mga seksyon sa ibaba.



Dahilan 1: Ang uri ng Application ay Nakatakda sa Module

Kung ang iyong aplikasyon ay nagpapakita ng nabanggit na error, ang pinakamadali at matagal na solusyon ay ang pagbabago ng ' package.json ” file. Hanapin ang key/value pair na mayroong “ susi 'ng' uri ” at ang nakatalagang halaga ng “ modyul ”. Ginagawa nitong modular ang kapaligiran ng buong application, na pumipigil sa paggamit ng lumang ' CommonJS ” mga modyul at pamamaraan. Ang visual na representasyon ng key/value pair na ito ay lalabas nang ganito:





'uri' : 'module' ,

Solusyon: Alisin ang 'Uri' na Key

Ang solusyon ay ang pagtanggal ng ' uri ” key at nakatalagang value mula sa node.js project “ package.json ” file. Ang pag-alis mula sa 'package.json' na file ay nagsasamantala sa saklaw ng ES6 module at ginagawang gumagana ang 'require() method. Ngayon, kapag ang parehong code ay naisakatuparan muli ay hindi magkakaroon ng error.



Dahilan 2: Nagtatrabaho sa “.mjs file

Ang ' .mjs ” ay isang module ng JavaScript source code file. Naglalaman ito ng code sa loob ng module na kapaligiran hindi sa ' CommonJS ” na hinahati ang code sa maraming file para sa mas mahusay na pamamahala. Ang ' nangangailangan() 'Ang pamamaraan ay nasa ilalim ng' CommonJS ”. Iyon ang dahilan kung bakit ang 'kailangan' na paraan ay magiging hindi matukoy kapag ginamit sa loob ng ' .mjs ” file extension at humahantong sa paglitaw ng nabanggit na error:

Solusyon: I-convert ang File Extension sa “.cjs”

Tulad ng modular JavaScript source code ang file extension ng “ .mjs ' mayroon pa. Ang extension ng ' .cjs Ang 'ay ibinigay para sa' CommonJS ” mga module at katangian. Ang file na ito ay hindi tumatanggap ng ' modular 'mga pakete tulad ng' angkat ” ngunit gumagana nang maayos sa mga bersyon ng ES5. Sa aming kaso, malulutas ng pagbabago ng extension ng file ang isyu na nauugnay sa ' nangangailangan() 'paraan:

Alternatibong Diskarte: Gamitin ang ES6 Statement na “import/export”

Ang ' nangangailangan() Ang pamamaraan ay tinukoy at ibinigay ng ' CommonJs ” at katanggap-tanggap hanggang sa bersyon ng JavaScript ng ES5(ECMAScript 5). Nai-publish ito noong 2009 at ngayon ay naging lipas na dahil maraming pinakabagong mga module ang hindi sumusuporta dito o hindi gumagana ng maayos sa ES5. Katulad ng ' nangangailangan() Ang 'paraan ay pinapalitan na ngayon ng mas na-optimize at madaling ' angkat ” mga pahayag. Ang pagtatrabaho ng parehong mga entity ay pareho ngunit ang 'import' ay may mas mataas na gilid dahil sa pinakabagong teknolohiya at mas madaling ibinigay nito.

Para sa Default o External Module

Sa demonstration sa ibaba, ang 'import' na pahayag ay ginagamit bilang isang alternatibo sa 'require()' na paraan upang i-import ang default o third-party na module:

angkat readlineObj mula sa 'Basahin ang linya' ;

console. log ( readlineObj ) ;

Pagkatapos ng compilation ng nabanggit na code, ang parehong gawain na kailangang gawin ng ' nangangailangan() Ginagawa ang 'paraan at ang' ReferenceError: hindi tinukoy ang pangangailangan ” ay hindi rin lilitaw:

Para sa Mga Custom na Binuo na Module

Ang ' angkat Ginagamit din ang pahayag ng ” para “i-import” ang mga custom-build na module o function mula sa iba pang mga file na naninirahan sa pareho o magkakaibang mga direktoryo. Ang mga function o variable mula sa ibang mga file ay ini-export gamit ang ' i-export ” keyword. Halimbawa, bisitahin ang snippet ng code sa ibaba kung saan ang isang function at isang random na variable ay ii-import mula sa isa pang file:

app.js

const exportVariable = 'Ang Gabay na ito ay Ibinigay ng Linuxhint!' ;

const exportFunction = ( ) => {

console. log ( exportVariable ) ;

} ;

i-export default exportFunction ;

i-export {

exportVariable

} ;

Ang paliwanag ng bloke ng code sa itaas ay ang mga sumusunod:

  • Una, ang random na variable na pinangalanang ' exportVariable ' ay tinukoy at ang arrow function na ' exportFunction() ” ay nilikha na nagpi-print ng ginawang “exportVariable” sa ibabaw ng console.
  • Ang mga keyword ng ' default na pag-export 'at' i-export ' ay ginagamit upang i-export ang ' exportFunction() 'at' exportVariable ” entity mula sa file.
  • Kapag na-import ang file na ito, magagamit ang na-export na function at mga variable upang magamit doon.

index.js

Ang 'index.js' ay ang aming pangalawang file kung saan ang na-export na function at variable ay ii-import at gagamitin, naglalaman ito ng code na nakasaad sa ibaba:

angkat exportFunction, { exportVariable } mula sa './app.js' ;

exportFunction ( ) ;

console. log ( exportVariable ) ;

Sa code sa itaas, ang ' angkat 'Ang pahayag ay ginagamit upang i-import ang default' exportFunction() 'at ang variable' exportVariable ' galing sa ' app.js ” file.

Pagkatapos, ang parehong na-import na entity ay ini-invoke at ipinapakita sa console para sa mga layunin ng pag-verify.

Ngayon, isagawa ang pangunahing ' index.js ” file gamit ang nakasaad na command sa ibaba:

index ng node. js

Ang nabuong output ay nagpapakita na ang mga na-import na elemento ay gumagana nang tama nang hindi nagiging sanhi ng ' ReferenceError: hindi tinukoy ang pangangailangan ” error:

Iyon ay tungkol sa paglutas sa tinukoy na error.

Konklusyon

Upang malutas ang ' ReferenceError: hindi tinukoy ang pangangailangan 'error, tanggalin ang ' uri 'susi na may halaga ng ' modyul ' galing sa ' package.json ” o baguhin ang kasalukuyang gumaganang extension ng file sa “ .cjs ”. Kung nais mong magtrabaho sa ES6 modular na bersyon, sa halip na gamitin ang ' nangangailangan() 'paraang gamitin ang' angkat ” paglapit ng mga pahayag. Ipinaliwanag ng gabay na ito ang mga posibleng pag-aayos upang malutas ang ' ReferenceError: hindi tinukoy ang pangangailangan 'error' sa node.js