Ich habe ein Modul geschrieben, das ich vor kurzem bei npm veröffentlicht habe (https://npmjs.org/package/wisp).
So wird es gut über die Kommandozeile installiert:
$ npm i -g wisp
Wenn ich es jedoch über die Befehlszeile ausführe, wird immer wieder die Fehlermeldung angezeigt, dass der Optimist nicht installiert ist:
$ wisp
Error: Cannot find module 'optimist'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4)
at Module._compile (module.js:449:26)
at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25)
at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29)
at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18)
Ich habe jedoch in package.json als Abhängigkeit angegeben:
{
"name": "wisp",
"author": "Brendan Scarvell <[email protected]>",
"version": "0.1.0",
"description": "Global nodejs file server",
"dependencies": {
"optimist": "~0.3.4"
},
"repository": "git://github.com/tehlulz/wisp",
"bin": {
"wisp" : "./wisp"
}
}
Weiß jemand, was zu tun ist, um dies zum Laufen zu bringen? Ich weiß, dass es damit zu tun hat, dass der bin-Teil die ausführbare Datei zu bin hinzufügt und die node_modules in diesem Verzeichnis leer sind. Keine Ahnung, wie man das löst.
./node_modules/wisp/wisp
was gut funktioniert.Antworten:
Für alle anderen, die darauf stoßen, hatte ich dieses Problem aufgrund meiner
npm
Installation an einem Ort, der sich nicht auf meinem befindetNODE_PATH
.Mein NODE_PATH war leer und das Ausführen
npm install --global --verbose promised-io
zeigte, dass es installiert wurde in/opt/lib/node_modules/promised-io
:Mein Skript schlägt fehl am
require('promised-io/promise')
:Ich habe wahrscheinlich Node und Npm von der Quelle mit installiert
configure --prefix=/opt
. Ich habe keine Ahnung, warum sie dadurch nicht in der Lage sind, installierte Module zu finden. Die Korrektur für den Moment besteht darin, NODE_PATH auf das richtige Verzeichnis zu verweisen:Mein
require('promised-io/promise')
jetzt gelingt.quelle
export NODE_PATH=...
sie in der lokalen Shell so festgelegt, dass sie in Befehle exportiert wird, die in dieser Shell ausgeführt werden. Um die Änderung dauerhaft oder für alle Shells verfügbar zu machen, legen Sie sie in .profile oder ähnlichem ab. Das Konzept als Ganzes ist für den Neuling ärgerlich komplex. Lesen Sie help.ubuntu.com/community/EnvironmentVariables . Für Windows möchten Sie zu Linux wechseln. OK, nur ein Scherz. Versuchen Sie es mit computerhope.com/issues/ch000549.htm oder googeln Sie es.open -a TextEdit ~/.bash_profile
In Terminal ausführen, fügen Sieexport NODE_PATH=/usr/local/lib/node_modules
es am Ende der Datei hinzu. Starten Sie das Terminalfenster neu. Jetztecho $NODE_PATH
sollte das Laufen ausgedruckt werden/usr/local/lib/node_modules
.füge dies zum Anfang von prog (mac) hinzu:
module.paths.push('/usr/local/lib/node_modules');
quelle
os.environ.nodepath
(etwas in dieser Richtung) ersetzen .Standardmäßig schaut der Knoten nicht in das / usr / local / lib / node_module, um globale Module zu laden. Informationen zum Laden des Moduls finden Sie unter http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
Entweder müssen Sie 1) das Modul / usr / local / lib / node_module zu NODE_PATH hinzufügen und exportieren oder 2) die installierten Knotenmodule nach / usr / local / lib / node kopieren. (Wie im Link zum Laden des Modulmoduls erläutert, sucht der Knoten in diesem Pfad und funktioniert.)
quelle
Versuchen Sie für einige (wie mich), dass nichts anderes funktioniert hat, Folgendes:
Hoffe es hilft jemandem :)
quelle
Der folgende generische Fix würde für jedes Modul gelten. Zum Beispiel mit
request-promise
.Ersetzen
Mit
gearbeitet ( Quelle ) und auch für
globals
undinherits
Versuchen Sie auch, die Umgebungsvariable festzulegen
quelle
Ich habe den "Optimist" -Modulfehler erhalten und habe gerade "npm install" durchgeführt, um ihn zu beheben. ging an diesem Fehler vorbei.
https://github.com/mbloch/mapshaper/issues/12
quelle
$ vim /etc/profile.d/nodejs.sh
quelle
Unter Windows kann Nodejs unter Windows kein installiertes Modul finden? Was für mich funktioniert hat, ist npm Link wie in
quelle
npm install wisp --save
(ohne die Option -g) erstellen lassenVerwenden Sie für Mac-Benutzer am besten die manuelle Installation:
Referenz: https://docs.npmjs.com/getting-started/fixing-npm-permissions
quelle
Hatte das gleiche Problem auf einem der Testserver
Ubuntu
unterroot
. Dann einen neuen Benutzer erstelltuseradd -m myuser
und installiert alles (nvm
,node
, Pakete) , wiemyuser
. Jetzt funktioniert es gut.quelle
Wenn Sie unter Windows gerade eine Neuinstallation durchgeführt haben und diese erhalten, müssen Sie Ihren npm-Cache in \ AppData \ Roaming wegblasen
quelle
In meinem Fall waren beide
node
undnpm
auf dem gleichen Weg (/usr/bin
). DasNODE_PATH
war leer, alsonpm
platzierten die globalen Module dort,/usr/lib/node_modules
wo sierequire(...)
erfolgreich gefunden wurden. Die einzige Ausnahme war dasnpm
Modul, das mit dem Paket nodejs geliefert wurde. Da ich ein 64-Bit-System verwende, wurde es in platziert/usr/lib64/node_modules
. Dies ist nicht der Ort, an dem (...) Suchen erforderlich sind, wenn derNODE_PATH
Knoten leer ist und von dem aus gestartet wurde/usr/bin
. Ich hatte also zwei Möglichkeiten:/usr/lib64/node_modules/npm
zu/usr/lib/node_modules/npm
/usr/lib/node_modules/*
nach verschieben/usr/lib64/node_modules/
und einstellenNODE_PATH=/usr/lib64/node_modules
Beide haben funktioniert. Ich verwende OpenSUSE 42.1 und das Paket nodejs aus dem Update-Repository. Version ist 4.4.5.
quelle
Ich habe das auf einfache Weise gemacht ...
npm install --global --verbose protractor
Aktualisieren Sie den Webtreiber-Manager.
funktioniert gut für mich.
Hoffe das hilft dir ....
quelle
Ich habe diesen Fehler bekommen
Error: Cannot find module 'number-is-nan'
während das Modul tatsächlich existiert. Dies lag an einer fehlerhaften / unvollständigen Installation von Node.js.Für Windows benötigen Sie, wie andere Antworten vermuten lassen, eine saubere Node-Installation :
npm
undnpm_cache
inC:\Users\user\AppData\Roaming
npm init
oder (npm init --yes
für die Standardkonfiguration) aus )NODE_PATH
. In diesem Pfad werden Ihre Pakete installiert. Es ist wahrscheinlich so etwas wieNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
npm
sollte einwandfrei funktionierenHinweis :
Probieren Sie die letzten Punkte aus, bevor Sie Node.js neu installieren. Dies kann Ihnen Zeit sparen und eine Neuinstallation aller Pakete vermeiden.
quelle
Ich habe gerade dieses Problem des
axios
Moduls getroffen. Dann habe ich folgendes versucht: rennenrm -rf node_modules
undyarn
. Und es funktioniert.quelle
Ich hatte den gleichen Fehler wie das OP, aber ich stöberte in den Protokollen, die ich sehen konnte
sh: node: command not found
.Es stellt sich heraus, dass das Programm / usr / bin / node (symlink) nicht mehr mit installiert ist
apt install nodejs
. Einmal symlinked/usr/bin/node' to
nodejs,
npm install -g @ angle / cli` erfolgreich war.Der richtige Weg, dies auf Debian zu installieren, ist
apt install nodejs-legacy
.quelle
Ich musste C: \ Users \ {Benutzername} \ AppData \ Roaming \ npm zu meinen env-Variablen hinzufügen und dann konnte ich Sachen installieren.
quelle