Zum Beispiel, welches Node-Paket referenziert das Node-Programm im aktuellen Verzeichnis? Es sollte das node_modules im aktuellen Verzeichnis sein, aber in einigen Fällen referenziert es die Standard-node_modules, die im Node-Pfad angegeben sind. In solchen Fällen führt selbst wenn Sie das Repository des aktuellen Verzeichnisses auf GitHub veröffentlichen, die in einer beliebigen Umgebung geklonte Ausführungsumgebung zu einem Paket-nicht-gefunden-Fehler.
z.B. Beispiel, bei dem das aktuelle Verzeichnis /mnt/c/pg/ ist, packages.json nicht definiert ist, aber der Standard-node_path /mnt/c/pg/node/ verwendet wird
/mnt/c/pg$ node
> require.resolve('express')
'/mnt/c/pg/node/node_modules/express/index.js'
z.B. Beispiel, bei dem express und moment das node_modules im aktuellen Verzeichnis referenzieren können, aber cors nicht gefunden wird, sodass der Standard referenziert wird
/mnt/c/pg/web/vue_dev$ node
> require.resolve('cors')
'/mnt/c/pg/node/node_modules/cors/lib/index.js'
> require.resolve('express')
'/mnt/c/pg/web/vue_dev/node_modules/express/index.js'
> require.resolve('moment')
'/mnt/c/pg/web/vue_dev/node_modules/moment/moment.js'
Darüber hinaus könnte es später Probleme verursachen, je nachdem, ob ein Paket lokal im aktuellen Verzeichnis installiert ist, als Abhängigkeit installiert und verwendet wird oder ob es ordnungsgemäß mit einer in packages.json angegebenen Version installiert ist.
Wenn express beispielsweise nicht in packages.json definiert ist, aber ./node_modules/express/index.js lokal referenziert werden kann, bedeutet dies, dass eine beliebige Version von express verwendet wird, die als Abhängigkeit eines anderen Pakets installiert wurde.
npm list -g | less
npm list | less
Es ist wichtig, npm list und andere Tools zu verwenden, um zu bestätigen, wo im Abhängigkeitsbaum es sich befindet, welche Version es ist und ob alle auf der obersten Ebene verwendeten Pakete in packages.json angegeben sind.
(Referenz)