node.js - Nodejs kan ikke finde installeret modul på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg lærer nodejs i øjeblikket på Windows. Flere moduler installeres globalt med npm.cmd, og nodejs kunne ikke finde de installerede moduler. Tag jade til for eksempel


npm install jade -g


Jade er installeret i mappen "C:Program Files (x86) odejs ode\_modules", men den følgende kode mislykkes med en "Cannot find module 'jade'" fejl,


var jade = require('jade');


Koden kører dog med succes, når jade er installeret lokalt (uden -g indstilling i npm). Jeg vil ikke bruge lokalt installerede moduler, det er spild af diskplads for mig, kan nogen hjælpe mig med at gøre de globalt installerede moduler til at fungere på Windows?

Bedste reference


Tilføj en miljøvariabel kaldet NODE\_PATH og sæt den til \%USERPROFILE\%Application Data pm ode\_modules (Windows XP), \%AppData\% pm ode\_modules (Windows 7/8/10), eller hvor npm slutter at installere modulerne på din Windows-smag . For at gøre det en gang for alt, tilføj dette som en systemvariabel i fanen Avanceret i dialogboksen Systemegenskaber (Kør control.exe sysdm.cpl,System,3).


Hurtig løsning i Windows 7+ er bare at køre:


rem for future
setx NODE\_PATH \%AppData\%
pm
ode\_modules
rem for current session
set NODE\_PATH=\%AppData\%
pm
ode\_modules


Det er værd at nævne, at NODE\_PATH kun bruges til import af moduler i Node apps. Når du vil bruge globalt installerede moduler 'binære filer i din CLI, skal du også tilføje det til din PATH, men uden node\_modules del (for eksempel \%AppData\% pm i Windows 7/8/10).





Gamle historie


Jeg er meget ny til node.js selv, så jeg kan ikke helt rigtigt, men fra min erfaring virker det på denne måde:



  1. -g er ikke en måde at installere globale biblioteker på. Det er kun en måde at placere dem på systemsti, så du kan kalde dem fra kommandolinjen uden at skrive den fulde vej til dem. er nyttigt, for eksempel, da nodeprogram konverterer lokale filer, som mindre - hvis du installerer det globalt, kan du bruge det i enhver mappe.

  2. node.js selv kiggede ikke på den globale global dir, det bruger en anden algoritme til at finde nødvendige filer: http://nodejs.org/api/modules.html#modules\_file\_modules (dybest set scanner hver mappe i sti, startende fra den nuværende for node\_modules -mappen og kontrollerer den).



Se lignende spørgsmål for flere detaljer: Hvordan installerer jeg et modul globalt ved hjælp af npm? [43]

Andre referencer 1


Hvis du er i Windows7-platformen, skal du måske ændre NODE\_PATH som denne:
\%AppData\% pm ode\_modules

Andre referencer 2


Jeg ved, at jeg kan vække en zombie, men jeg tror, ​​det er stadig et problem. Hvis du har brug for global adgang til nodemoduler på Windows 7, skal du tilføje dette til din globale variabelsti:


C:Users{USER}AppDataRoaming
pm


Vigtigt: Kun dette uden node\_modules delen tog mig halv time for at se dette.

Andre referencer 3


For at få det til at fungere på Windows 10 løste jeg det ved at tilføje mappen \%USERPROFILE\%AppDataRoaming pm til min PATH. At have ode\_modules tilføjet som dette: \%USERPROFILE\%AppDataRoaming pm ode\_modules fungerede ikke for mig.

Andre referencer 4


Jeg vil bare citere fra denne nodes blog-post ... [45]



  Generelt er tommelfingerregelen:

  
  

      
  • Hvis du installerer noget, du vil bruge i dit program, skal du bruge '(hvad som helst') og derefter installere det lokalt, ved roden af
      dit projekt.

  •   
  • Hvis du installerer noget, du vil bruge i din shell, på kommandolinjen eller noget, skal du installere det globalt, så dets
      binære filer slutter i din PATH-miljøvariabel.

  •   

  
  ...

  
  Selvfølgelig er der nogle tilfælde, hvor du vil gøre begge dele.
  Coffee-script og Express er begge gode eksempler på apps, der har en
  kommandolinje grænseflade, samt et bibliotek. I disse tilfælde kan du
  gør et af følgende:

  
  

      
  1. Installer det på begge steder. Er du så alvorlig på diskplads? Det er fint, virkelig. De er små JavaScript-programmer.

  2.   
  3. Installer det globalt, og klik derefter på npm linket kaffe-script eller npm link express (hvis du er på en platform, der understøtter symbolske links.) Så
      du behøver kun at opdatere den globale kopi for at opdatere alle symlinks som
      godt.

  4.   


Andre referencer 5


For at gøre det kort skal du bruge npm link jade i din app bibliotek.

Andre referencer 6


Forsøgte at tilføje/redigere miljøvariabler og komme til at konkludere, at:



  1. Rediger/tilføj User variables (af den øverste boks) i stedet for System variables (af den nederste del); Ellers skal du 'køre som administrator' for at få det til at fungere.

  2. Tilføj ;\%AppData\% pm til Path for at bruge det som et kommandolinjeværktøj (hvis det understøttes, som jshint og grunt-cli.

  3. Opret NODE\_PATH og sæt det \%AppData\% pm ode\_modules for at require('<pkg\_name>') i scripts uden at installere det i projektmappen. (Men npm link foreslås til dette krav, hvis du arbejder på OS med mklink som Vista og nyere.



Testmiljø: [46]



  • Vind 7 (Ent., 64-bit, SP1), Node.js 4.2.4, npm 2.14.12

  • Vind 8.1 (Ent., 64-bit), Node.js 0.10.30, npm 1.4.21


Andre referencer 7


Jeg løb ind i dette problem på Windows 7, kører


npm install -g gulp


som administrator, mens du er logget på som en normal bruger.


Løsning: Når du gennemfører den samme installation som normal bruger (ikke 'Kør som administrator' for cmd) var det fint. Jeg gætter det er relateret til standardinstallations- og søgevej.

Andre referencer 8


Jeg havde en frygtelig tid at få globale moduler til at fungere. Til sidst tilføjede jeg eksplicit C:UsersyourusernameAppDataRoaming pm til PATH-variablen under Systemvariabler. Jeg havde også brug for at have denne variabel komme før nodejs-variablen på listen.


Jeg kører Windows 10.

Andre referencer 9


Fra min expierience med win8.1 npm installeres moduler på
C:Users[UserName]AppDataRoaming pm ode\_modules
  men dumply søger dem på
C:Users[UserName] ode\_modules.


Et simpelt løsningsreferencemodul i applikation med fuld sti:


var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node\_modules/jsonminify");

Andre referencer 10


For windows sagde alle, at du skulle indstille miljøvariabler for nodejs og npm moduler, men ved du hvorfor?
For nogle moduler har de kommandolinjeværktøj, efter at modulet er installeret, er ' [[modul]] .cmd fil i C: \ Programmer \ nodejs s bruges til lancering i vinduekommando. Så hvis du ikke føjer stien, der indeholder cmd-filen til miljøvariabler \% PATH\% , vil du ikke starte dem med succes gennem kommandovindue.

Andre referencer 11


Alternativt kan du tilføje til ~/.npmrc højre præfiks. Jeg har C:Program Files odejs til 64 Win7. [47]

Andre referencer 12


Jeg snuble på dette spørgsmål, fordi jeg vil bruge node.js med visuel studio 2015 på min nye computer med windows 10. Jeg brugte node.js på Windows 7 og 8 og 8.1 Aldrig et problem node.js at finde et modul. Jeg bruger en arv node.js 0,10.39 fordi jeg skal bruge denne version på grund af seriel og RFXCOM modulet.


Svaret til Windows 10 er at indstille NODE\_PATH i miljøvariablerne med C: \ Users \ User \ node\_modules.

Andre referencer 13


Til Windows 10 måtte jeg lokalt installere gulp i mappen:


C: \ Brugere \ MyAccount \ AppData \ Roaming \ NPM \ node\_modules


npm install gulp


Dette fixede mit problem med 'gulp er ikke genkendt'

Andre referencer 14


Jeg havde det samme problem, prøvede at installere bower med npm install -g bower


Jeg tror det var fordi node blev installeret af en anden bruger , ikke mig.


Jeg afinstallerede knude, og derefter installerede jeg det igen. Under installationen så jeg denne tekst til indstillingen Tilføj til PATH> npm-moduler :


Meddelelse i node-installation


Indtast billedbeskrivelse her [48]


Efter nodeinstallation udførte jeg igen npm install -g bower. Og nu arbejder bower.


Sikker på, det er ikke nødvendigt at geninstallere noden med egen bruger, ligesom mig. Løsningen skal være via NODE\_PATH eller PATH variabler, som andre brugere har forklaret.


Dette er kun for at bemærke, at dette problem kun opstår, hvis noden er installeret af en anden bruger (eller hvis installationen Tilføj til PATH> npm-moduler ikke er markeret) under installationen.

Andre referencer 15


Du skal bare downloade og geninstallere noden fra dette, og dette vil løse alle sti problemer. [49]


Glem ikke at genstarte din kommandoprompt eller terminal.

Andre referencer 16


hvis du bruger windows, det tager nogle skridt,
1) Opret en fil kaldet package.json


 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}


hvor hej er navnet på pakken og * betyder den nyeste version af din afhængighed


2) kode til dig projektmappe og kør følgende kommando


npm installere


Det installerer afhængighederne