it-swarm.com.de

NPM globale Installation "Modul kann nicht gefunden werden"

Ich habe ein Modul geschrieben, das ich vor kurzem bei npm veröffentlicht habe (https://npmjs.org/package/wisp).

So lässt es sich von der Kommandozeile aus gut installieren:

$ npm i -g wisp

Wenn ich es jedoch von der Kommandozeile aus laufe, erhalte ich eine Fehlermeldung, 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 Folgendes 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 mit dem bin-Teil zu tun hat, in dem die ausführbare Datei zu bin hinzugefügt wird und die node_modules in diesem Verzeichnis leer sind. Keine Ahnung, wie man das lösen kann.

177
Menztrual

Für alle anderen, die sich mit diesem Problem befassen, hatte ich dieses Problem, weil meine npm an einem Ort installiert wurde, der nicht in meinem NODE_PATH liegt.

[[email protected] ~]# which npm
/opt/bin/npm
[[email protected] ~]# which node
/opt/bin/node
[[email protected] ~]# echo $NODE_PATH

Mein NODE_PATH war leer und das Ausführen von npm install --global --verbose promised-io zeigte an, dass es in /opt/lib/node_modules/promised-io installiert wurde:

[[email protected] ~]# npm install --global --verbose promised-io
npm info it worked if it ends with ok
npm verb cli [ '/opt/bin/node',
npm verb cli   '/opt/bin/npm',
npm verb cli   'install',
npm verb cli   '--global',
npm verb cli   '--verbose',
npm verb cli   'promised-io' ]
npm info using [email protected]
npm info using [email protected]
[cut]
npm info build /opt/lib/node_modules/promised-io
npm verb from cache /opt/lib/node_modules/promised-io/package.json
npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ]
[cut]

Mein Skript schlägt auf require('promised-io/promise') fehl:

[[email protected] project]$ node buildscripts/stringsmerge.js 

module.js:340
    throw err;
          ^
Error: Cannot find module 'promised-io/promise'
    at Function.Module._resolveFilename (module.js:338:15)

Ich habe wahrscheinlich node und npm mit configure --prefix=/opt von der Quelle installiert. Ich habe keine Ahnung, warum dies dazu geführt hat, dass sie keine installierten Module finden konnten. Der Fix für jetzt ist, NODE_PATH im richtigen Verzeichnis zu zeigen:

export NODE_PATH=/opt/lib/node_modules

Meine require('promised-io/promise') ist jetzt erfolgreich.

330
Neek

füge dies zu Beginn von prog (mac) hinzu:

module.paths.Push('/usr/local/lib/node_modules');

33
Cando Zhou

Standardmäßig sucht der Knoten nicht in das Verzeichnis/usr/local/lib/node_module, um globale Module zu laden ..__ Lesen Sie das Modulladen unter http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

Also müssen Sie entweder 1) das/usr/local/lib/node_module zu NODE_PATH hinzufügen und es exportieren Oder 2) Kopieren Sie die installierten Knotenmodule nach/usr/local/lib/node (Wie im Link zum Laden des Moduls beschrieben, wird der Knoten in diesem Pfad suchen und funktionieren.)

14
randomness

Für einige (wie ich), dass nichts anderes funktioniert hat, versuchen Sie Folgendes:

brew cleanup
brew link node
brew uninstall node
brew install node

Hoffe es hilft jemandem :)

10
Will

Ich habe den "Optimist" -Modulfehler erhalten und habe einfach "npm install" ausgeführt, um ihn zu beheben. ging an diesem Fehler vorbei.

https://github.com/mbloch/mapshaper/issues/12

7
user2921139

Ich hatte dieses Problem für request-promise. In meinem Fall ersetze ich:

npm install request-promise --global

mit 

npm install request-promise --cli

gearbeitet ( source )

Versuchen Sie auch, die Umgebungsvariable einzustellen

NODE_PATH=%AppData%\npm\node_modules
4
student

$ vim /etc/profile.d/nodejs.sh

NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
export NODE_PATH="$NODE_PATH"
3
user1959076

Wenn Sie unter Windows eine Neuinstallation durchgeführt haben und dies erhalten, müssen Sie Ihren npm-Cache in\AppData\Roaming wegblasen

1
Dmitry

In meinem Fall befanden sich sowohl node als auch npm im selben Pfad (/usr/bin). Der NODE_PATH war leer, sodass die npm die globalen Module in /usr/lib/node_modules platziert hat, wo require(...) sie erfolgreich finden konnte ..__ Die einzige Ausnahme war das npm-Modul, das mit dem nodejs-Paket geliefert wurde. Da ich ein 64-Bit-System verwende, wurde es in /usr/lib64/node_modules platziert. Dies ist nicht der Ort, an dem die Anforderung (...) bei leerem NODE_PATH gesucht und der Knoten mit /usr/bin gestartet wurde. Ich hatte also zwei Möglichkeiten:

  • link /usr/lib64/node_modules/npm zu /usr/lib/node_modules/npm
  • verschiebe Module von /usr/lib/node_modules/* nach /usr/lib64/node_modules/ und setze NODE_PATH=/usr/lib64/node_modules

Beide haben gearbeitet. Ich verwende OpenSUSE 42.1 und das nodejs-Paket aus dem Aktualisierungs-Repository. Version ist 4.4.5.

1
GT.

Unter Windows kann von Nodejs das installierte Modul unter Windows nicht gefunden werden. was für mich funktioniert hat, läuft npm link wie in

npm link wisp
1
P M

Ich habe das auf einfache Weise gemacht ...

  1. Deinstallationsknoten über die Systemsteuerung deinstallieren [Windows 7]
  2. Knoten erneut installieren
  3. Installieren Sie den Winkelmesser npm install --global --verbose protractor
    Aktualisieren Sie den Webtreiber-Manager.

funktioniert gut für mich.

Hoffe das hilft dir ....

1
santhosh v

Ich habe diesen Fehler Error: Cannot find module 'number-is-nan' erhalten, obwohl das Modul tatsächlich existiert. Ursache war eine schlechte/unvollständige Installation von Node.js.

Wie andere Antworten nahelegen, benötigen Sie für Windows eine saubere Node-Installation :

  • Deinstallieren Sie Node.js
  • Löschen Sie die beiden Ordner npm und npm_cache in C:\Users\user\AppData\Roaming.
  • Starten Sie Windows neu und installieren Sie Node.js
  • Führen Sie npm initoder (npm init --yes für default config ) aus.
  • Legen Sie die Windows-Umgebungsvariable für NODE_PATH fest. In diesem Pfad werden Ihre Pakete installiert. Es ist wahrscheinlich etwas wie NODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
  • Starten Sie eine neue cmd-Konsole und npm sollte einwandfrei funktionieren

Hinweis : 

Probieren Sie die letzten Punkte aus, bevor Sie Node.js erneut installieren. Dies kann Ihnen etwas Zeit sparen und die Neuinstallation aller Pakete vermeiden.

1
alain.janinm

Hatte dasselbe Problem auf einem der Testserver, die Ubuntu unter root ausführen. Dann erstellt ein neuer Benutzer mit useradd -m myuser und installiert alles (nvm, node, packages) als myuser. Jetzt funktioniert es gut.

1
Dmitriy

Für Mac-Benutzer ist es am besten, die manuelle Installation zu verwenden:

Um die Wahrscheinlichkeit von Berechtigungsfehlern zu minimieren, können Sie npm auf .__ konfigurieren. Verwenden Sie ein anderes Verzeichnis. In diesem Beispiel handelt es sich um eine verborgene Verzeichnis in Ihrem privaten Ordner.

  1. Sichern Sie Ihren Computer, bevor Sie beginnen.

  2. Erstellen Sie ein Verzeichnis für globale Installationen:

    mkdir ~/.npm-global

  3. Konfigurieren Sie npm für die Verwendung des neuen Verzeichnispfads:

    npm config setze das Präfix '~/.npm-global'

  4. Öffnen oder erstellen Sie eine ~/.profile-Datei und fügen Sie diese Zeile hinzu:

    export PATH = ~/.npm-global/bin: $ PATH

  5. Aktualisieren Sie wieder in der Befehlszeile Ihre Systemvariablen:

    quelle ~/.profile

  6. Test: Laden Sie ein Paket global herunter, ohne Sudo zu verwenden.

    npm install -g jshint

Anstelle der Schritte 2 bis 4 können Sie die entsprechende ENV-Variable verwenden (z. B. wenn Sie ~/.profile nicht ändern möchten):

NPM_CONFIG_PREFIX=~/.npm-global

Referenz: https://docs.npmjs.com/getting-started/fixing-npm-permissions

0

Ich musste C:\Users\{Username}\AppData\Roaming\npm zu meinen Env-Variablen hinzufügen und dann konnte ich Sachen installieren. 

0
Rainhider

Ich hatte den gleichen Fehler wie das OP, aber beim Durchgraben der Protokolle konnte ich sh: node: command not found sehen.

Es stellt sich heraus, dass das Programm/usr/bin/node (symlink) nicht mehr mit apt install nodejs installiert ist. Einmal mit dem Link /usr/bin/node' tonodejs,npm install -g @ angle/cli` war erfolgreich.

Der richtige Weg, um dies unter debian zu installieren, ist apt install nodejs-legacy.

0
mike

Ich bin gerade auf dieses Problem des Moduls axios gestoßen. Dann habe ich Folgendes versucht: rm -rf node_modules und yarn ausführen. Und es funktioniert.

0
Finedy