După tragerea în jos un modul de la GitHub și urmând instrucțiunile pentru a construi, nu încercați trăgând-o într-un proiect existent, folosind:
> npm install ../faye
Acest lucru pare să facă truc:
> npm list
/home/dave/src/server
└─┬ [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Dar Node.js poate't găsi module:
> node app.js
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'faye'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
Chiar vreau să înțeleg ce se întâmplă aici, dar am'm la un pic de o pierdere de unde să se uite în continuare. Orice sugestii?
Folosind npm instala
instalează modulul în directorul curent numai (într-un subdirector numit node_modules
). Este app.js situat sub casa/dave/src/server/? Dacă nu doriți să utilizați modulul de la orice director, trebuie să-l instalați la nivel global, folosind
npm install-g`.
Am instalat, de obicei, cele mai multe pachete la nivel local, astfel încât ei a lua cazat împreună cu proiectul meu de cod.
Update (8/2019):
În zilele noastre, puteți utiliza pachetului-blocare.json fișier, care este generat automat atunci când npm modifică node_modules director. Prin urmare, puteți lăsa verificarea în pachete, pentru că pachetului-blocare.jsonpiese exact versiuni de node_modules, ai're utilizați în prezent. Pentru a instala pachete din pachet-blocare.json "în loc de" pachet.json
folosi comanda npm ci
.
Update (3/2016):
Am'am primit o mulțime de critici pentru răspunsul meu, în special, pentru a verifica în pachete care codul meu depinde. Cu câteva zile în urmă, cineva nepublicate toate pachetele lor (https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp) care s-a Reacționa, Babel, și doar despre orice altceva. Să sperăm că-l'e clar acum că, dacă aveți codul de producție, puteți't se bazează pe NPM, de fapt, menținerea dependențe pentru tine.
npm install --save module_name
De exemplu, dacă eroarea este:
{ [Eroare: nu se Poate găsi modul '/root/.npm/form-data'] cod: 'MODULE_NOT_FOUND' }
apoi, puteți rezolva această problemă prin executarea comenzii npm install-save form-data
.
Pentru mașina de Scris utilizatori, dacă importați un built-in modul Nod (cum ar fi "http", "cale" sau url
) și vă sunt obtinerea o eroare cum ar fi"nu Poate găsi modulul "x" atunci eroarea poate fi fixat de funcționare
npm install @types/node --save-dev
Comanda va importa NodeJS mașina de Scris definiții în proiectul dumneavoastră, permițându-vă să utilizați Nod's built-in module.
Acest lucru se întâmplă atunci când un prim mnp instalați-a prăbușit pentru un motiv oarecare (SIGINT de npm), sau că întârzierea a fost prea mult timp, sau de date este corupt. Încearcă o npm instala câștigat din nou't de a salva problema.
Ceva am gresit la npm verifica în primul rând, astfel încât cea mai bună alegere este de a elimina fișierul și pentru a reporni npm instala.
Dacă utilizați nvm, verificați existente node_modules care sunt legături către alte biblioteci sunt compilate pentru a corecta Node.js versiune.
Am avut aceeasi eroare. Motivul a fost următorul: Vom folosi nvm când ne-am're rularea a două aplicații pe un server, aveți nevoie de Node.js 5.6 deoarece foloseste nod-gd (care nu't rula pe Node.js 6 pentru acum), celelalte necesită Node.js 6. Node.js 6 este de apt-get de instalare.
De asemenea, vom folosi pm2 instrument pentru a implementa.
Deci, default setup este că pm2 proces începe atunci când nvm nu este în vigoare, astfel încât se folosește apt-get instalare de Node.js (versiunea 6). Deci, principalul pm2 daemon începe cu Node.js 6. Dacă am rula aplicații, în furculiță modul ei începe în procese separate și nvm setările sunt în vigoare. Când am rula aplicații, în modul cluster - au moșteni non-nvm mediu.
Așa că atunci când am încercat pentru a comuta la modul cluster aplicație nu a pornit, deoarece legăturile compilat pentru 5.6 gres cu acest mesaj.
Am'am rezolvat asta prin repornirea pm2 când nvm setings sunt în vigoare. De asemenea, script-uri de pornire ar trebui să fie fixe.
Elimina node_module
root folder din proiect(de exemplu: myApp
).
Du-te la myApp
folder și apoi tastați comanda de mai jos de la terminalul
>myApp>npm install
Se va instala toate dependență de module necesare pentru proiectul dumneavoastră.
Am experimentat acest lucru de eroare de ieri. Mi-a luat ceva timp să dau seama ca "principal" intrarea în pachet.json` a fost îndreptat la un dosar pe care-l'd mutat. După ce am actualizat care eroarea a disparut si pachetul lucrat.
M-am confruntat cu aceeasi problema cand cineva în echipa actualizat pachet.jsonîn SVN. Doar eliminarea
node_modules` director nu a ajutat. Cum am rezolvat problema:
rm -rf node_modules
rm package.json
rm package-lock.json
svn up
npm install
ng build --env=prod
Sper că acest lucru ajută cineva!
Această eroare poate fi întâlnită dacă ai nevoie de 'ing un modul care are o lipsă sau incorecte "principal" domeniul în ambalajul său.json. Deși modul în sine este instalat, npm/nod trebuie să folosească un singur .js fișier ca un entrypoint la module. Dacă "principală" câmp nu este acolo, este implicit să caute index.js în modul's folder. Dacă modulul's fișierul principal este nu numit index.js va't fi capabil de a nevoie
de ea.
Descoperit în timp ce de cotitură o browserify
pe bază de module într-un CommonJS nevoie
-stare modul; browserify
n't grijă despre lipsă principal domeniu, și deci eroarea a trecut neobservat.
Pot adăuga unul mai mult loc pentru a verifica; pachetul care am fost încercarea de a utiliza fost un alt unul de-al meu pachete care am publicat-o la un privat NPM repo. Am uitat pentru a configura 'principal' proprietate în pachet.json în mod corespunzător. Deci, pachetul a fost acolo, în dosar node_modules de consumatoare de pachet, dar am fost "nu poate găsi modulul". Mi-a luat câteva minute să-mi realizez gafa. :-(
De fiecare dată când pachetului-blocare.jsonschimbări
npm ciar trebui să ruleze înainte de a rula codul. Presupunând codul începe cu "start" npm script,
npm cinu pot auto-rula cu următoarele
prestart` npm script
``json { "script": { "prestart": "npx @olegjs/pe-schimbare-de fișier pachet-blocare.json npm ci" } }
``
Am fost încercarea de a publica propriul pachet și apoi să-l includă într-un alt proiect. Am avut problema asta din cauza cum am'am construit primul modul. Im folosind ES2015 de export pentru a crea module, e.g vă permite să spun modulul arata ca asta:
export default function(who = 'world'){
return `Hello ${who}`;
}
După compilat cu Babel și înainte de a fi publicate:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {
var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];
return 'Hello ' + who;
};
Deci dupa npm instala module-numele` într-un alt proiect (nici unul ES2015) am avut de a face
var salut = necesită('modulul-numele').implicit;
De fapt primit pachetul importate.
Sper că vă ajută!
Confruntat cu această problemă în timp ce utilizați webpack
cu webpack-dev-middleware
.
A transformat un *singur fișier intr-o dosar**.
Paznicul părea să nu vadă noul dosar și modulul a fost acum lipsește.
Fix prin repornirea procesului.
Doar găsit un scenariu neobișnuit care ar putea fi de folos pentru cineva și este un fel de un hering roșu.
Am fost, de asemenea, obtinerea nu Poate Găsi Module eroare dar ciudat totul a funcționat perfect în local (Mac găzduit) Node.js mediu. Această problemă a apărut doar atunci când codul a fost implementat pe server Linux.
Ei bine... s-a dovedit a fi o greșeală de scriere, care (aparent) cel bazat pe Mac Node.js instalarea a fost foarte fericit să o ignore.
Include arata ca aceasta:
var S3Uploader = require('./S3Uploader.class');
Dar efectiv dosar a fost numit "s3Uploader.clasa.js"
Notificare carcasa diferenta in 's' vs 'S' între cod și nume.
Deci - în șansă ciudat că nici unul dintre celelalte soluții aici se rezolva problema ta, verifica triple care le're nu mis-carcasa personajele în a inclus nume! :)
și DUH!