Fable: Bibliotheksreferenzen werden unterbrochen, wenn der Projektname einen Punkt enthält

Erstellt am 27. Juli 2016  ·  4Kommentare  ·  Quelle: fable-compiler/Fable

In der neuesten Fable (0.4.4) habe ich ein Problem beim Erstellen eines Projekts, das auf ein anderes Projekt verweist. Wenn das referenzierte Projekt einen Punkt im Namen hat, generiert Fable falsche Pfade in den erforderlichen Aufrufen. Vor dem Upgrade von Fable hatte ich das Problem nicht.

Stellen Sie sich vor, Sie haben eine Lösung mit drei F#-Projekten: Library , Library.Another und Main . Main verweist sowohl auf Library als auch auf Library.Another . Nehmen wir nun an, die beiden Bibliotheksprojekte wurden bereits von Fable zu out/library und out/library-another kompiliert.

Wenn Sie nun das Main Projekt mit dieser fableconfig.json kompilieren...

{
  "module": "commonjs",
  "outDir": "out/main",
  "projFile": "Test/Main/Main.fsproj",
  "refs": {
    "Library": "../library",
    "Library.Another": "../library-another"
  }
}

...in der generierten Ausgabe erhalten Sie immer dann falsche require-Aufrufe, wenn ein Modul aus dem Library.Another Projekt referenziert wird (Module, die von Library referenziert werden, funktionieren einwandfrei). Zum Beispiel:

var _SomeModule = require("../library/SomeModule");

var _AnotherModule = require("../library-another/Library.Another/AnotherModule");

Der erste erforderliche Aufruf funktioniert wie erwartet. Der zweite require-Aufruf hat jedoch aus irgendeinem Grund Library.Another/ in seinem Pfad, was beim Versuch, den Verweis aufzulösen, einen Laufzeitfehler verursacht.

Ein ähnliches Problem tritt bei Verwendung des AMD-Modulsystems auf.

Hinweis: In meinem Fall sind die Verweise von Main auf die Bibliotheken Projektreferenzen, die innerhalb derselben Projektmappe erstellt wurden (im Gegensatz zu einer externen DLL) – ich bin mir nicht sicher, ob dies einen Unterschied macht oder nicht.

bug

Alle 4 Kommentare

Hmm, ich bin mir nicht sicher, ob der Punkt das Problem ist, da wir in dem Projekt mit den Tests

/Main/Main.fsproj
/Library/Library.fsproj
         SomeModule.fs
/Library.Another.fsproj
/Library.Another/AnotherModule.fs

Danke für den Bericht!

Mein Projekt ist nicht öffentlich, aber ich habe ein schnelles Repo mit ähnlicher Struktur erstellt, um das Problem zu zeigen, das ich habe:

https://github.com/funlambda/fable-project-ref-example

Wenn Sie es klonen und build-and-run.sh ausführen, sollten Sie den Laufzeitfehler des Modulrefs sehen. Der problematische Pfad ist in out/main/Program.js :

var _AnotherModule = require("../library-another/Library.Another/AnotherModule");

Vielen Dank, dass Sie sich die Zeit genommen haben, die Struktur vorzubereiten, um das Problem zu reproduzieren! Es war tatsächlich der Punkt :) Ich habe [email protected] mit dem Fix veröffentlicht. Könntest du es versuchen?

Funktioniert jetzt perfekt - danke für die Reparatur und die wahnsinnig schnelle Abwicklung!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen