2016-08-01 3 views
0

Ich habe zwei Angular2-Projekte mit Webpack als Modul Bundler und Typoskript.Quellcode-Symlink in einem Angular 2 Webpack-Projekt verstehen

Mit dem Ziel, Code zwischen zu teilen, teilte ich einige der Quellcode und erstellt einen Symlink zu diesem "externen" Quellcode von jedem dieser zwei Projekte.

Danach kann der "symlinked code" die Importe nicht korrekt auflösen.

unter einem "Hallo Welt" -Projekt, um meine Bedenken zu zeigen.

https://github.com/datracka/angular2-symlink-issue

Dieses Projekt läuft gerade nach vorne, aber wenn Sie den angegebenen src Ordner entfernen und einen symbolischen Link zu einem anderen src Ordner mit dem gleichen Quellcode erstellen, aber sich an /another/path/src dann erhalten Sie einen Compiler-Fehler:

ERROR in .-shared/src/main.ts 
Module build failed: TypeError: Path must be a string. Received undefined 
    at assertPath (path.js:7:11) 
    at Object.dirname (path.js:1326:5) 
    at ensureTypeScriptInstance (/Users/vicensfayos/Projects/angular2-whatafuck/node_modules/ts-loader/index.js:156:103) 
    at Object.loader (/Users/vicensfayos/Projects/angular2-whatafuck/node_modules/ts-loader/index.js:403:14) 

Also meine Frage ist: Was fehlt mir mit Symlinks, wenn ich den Quellcode in einem anderen Ordner aus dem Projektordner selbst "vertreibe"?

Meine Vermutung ist über die Konfiguration ordnungsgemäß auflösen Objekt in Webpack https://webpack.github.io/docs/resolving.html zu überschreiben die node.js laden node_modules Algorithmus https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders aber nicht Glück.

Hoffentlich kann jemand mich in irgendeine Richtung zeigen.

Antwort

1

Ich fand die Antwort.

Meine Vermutung war richtig. Es ging darum, wie Nodejs die Abhängigkeiten auflöst. https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders

Der symlinked Code versucht, die Abhängigkeiten aufzuspüren, die bis zum Finden node_module aufsteigen. Aber nichts ist da. node_module ist im übergeordneten Projekt.

Daher ist die Lösung erstellen einen anderen Symlink aus dem symbolischen Code zum node_modules Ordner des übergeordneten Projekts, um die Abhängigkeiten aufzulösen.