Ich bin neu bei Node, aber ich genieße es bisher. Ich habe versucht, mein node_modules
(Bibliotheken) Verzeichnis außerhalb der öffentlichen "Webroot" zu verschieben und brauche Beratung und Anleitung.Kann ich das npm node_modules-Verzeichnis außerhalb meines "Webroot" setzen?
Ich habe mein Setup einfach expressJS basierte Knoten Projekt wie folgt:
/my_project
/config
/public
/node_modules
server.js
ich mich gefragt, ob es irgendeine Art und Weise war ich die /node_modules
dir außerhalb meines Webroot haben könnte und nicht meine Anwendung brechen. Ich bin nur so daran gewöhnt, das Nötigste in meiner öffentlich zugänglichen Webroot zu halten und fühle mich nicht richtig mit den libs da drin. Nenn mich altmodisch, aber so bin ich es gewohnt, Sachen in der PHP- und C# -Welt zu machen.
Wenn ich ein Setup das Projekt wie folgt:
/my_project
/config
/node_modules
/public
server.js
dann geht alles wackelig und require()
Magie bricht der Knoten.
Ich habe folgendes versucht:
var express=require('../express');
, die nicht entweder die ‚Find-Modul kann nicht‘ Typen Fehler gibt mir nicht funktioniert.
- Ist das, was ich fragen, auch möglich, wenn ja, wie?
- Gibt es irgendwelche größeren Risiken, wenn ich meine libs in einem Webroot habe, oder habe ich hier etwas Grundlegendes mit der Funktionsweise von Node verpasst?
-
Was machen Sie, was ist die beste Praxis für Produktions-Apps?Darf ich einige Beispiele Ihrer Produktionspraktiken und warum.
'var express = require ('../ node_modules/express');' scheint zu funktionieren. Es scheint jedoch ein wenig klobig. Ich bin immer noch sehr daran interessiert, was Sie als Best Practice bezeichnen. –
erfordern ('Express') sollte immer noch funktionieren. Siehe [diese handliche Post] (http://www.bennadel.com/blog/2169-Where-Does-Node-js-And-Require-Look-For-Modules-.htm). Vor allem dieser Teil: "Wenn das angegebene Modul kein Kernmodul ist, sucht Node.js nach einem Verzeichnis namens 'node_modules'. Es wird im aktuellen Verzeichnis (relativ zur aktuell ausgeführten Javascript-Datei in Node) gestartet) und dann in der Ordnerhierarchie nach oben arbeiten und jede Ebene für einen Ordner node_modules überprüfen. " Es scheint also, dein Problem ist woanders. –
Nebenbei bemerkt, ist es im Knoten üblich, Dateien zu platzieren, auf die von Clients in/public zugegriffen werden kann. server.js sollte wahrscheinlich nicht sein. –