Less.js: Verwenden von bin / lessc-Würfen "Pfad muss eine Zeichenfolge sein. Undefiniert empfangen"

Erstellt am 10. Mai 2016  ·  12Kommentare  ·  Quelle: less/less.js

Wie bereits in # 2881 und nach dem Zusammenführen von # 2891 berichtet, wird lessc --source-map-map-inline styles/main.less in Node v6 ausgeführt

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at /Users/jhnns/dev/jhnns/less.js/bin/lessc:311:61
    at Object.<anonymous> (/Users/jhnns/dev/jhnns/less.js/bin/lessc:508:3)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)

Dies liegt daran, dass ein undefinierter Pfad als basename .

bug low priority up-for-grabs

Hilfreichster Kommentar

Fragen Sie sich über den Status? Ich erhalte diesen Fehler mit Knoten 6/7.

Alle 12 Kommentare

Irgendwelche Updates dazu?

Ja, irgendwelche Updates?
Ich möchte jetzt zu Knoten @ 6 wechseln, der LTS ist, aber ich kann nicht, bis dies behoben ist

Fragen Sie sich über den Status? Ich erhalte diesen Fehler mit Knoten 6/7.

Ich bekomme auch diesen Fehler.
Wie kann ich meine weniger mit einer separaten Kartendatei kompilieren?
Ich benutze den Befehl:
lessc --no-color test.less --source-map=test.css.map -source-map-url=test.css.map

Wie @jhnns erwähnt hat, stellt sich heraus, dass nach einem zweiten Parameter für die Ausgabe gesucht wird (dies ist nicht dokumentiert), daher schlägt dies fehl:

lessc --source-map=test.less.map test.less>test.css

Das Hinzufügen der Ausgabedatei als Parameter anstelle des Pipings funktioniert jedoch wie folgt:

lessc --source-map=test.less.map test.less ./test.css

Hoffe das hilft euch 👍

Mit anderen Worten, die richtige Lösung wäre "einen Fehler auslösen, wenn eine Sourcemap-Datei angegeben ist, die Ausgabe-CSS jedoch nicht", oder?
Da sich die Quellkarte auf eine bestimmte CSS-Datei beziehen muss , gibt es offensichtlich keine (nicht vulgären) Methoden, um eine ordnungsgemäße Quellkarte ohne angegebene Ausgabe-CSS zu generieren, dh diese Befehlszeilen machen einfach keinen Sinn:

lessc --source-map=test.less.map test.less
lessc --source-map=test.less.map test.less > test.css

Nein, es sollte wie früher funktionieren - diese beiden Befehle:

lessc --source-map=test.less.map test.less
lessc --source-map=test.less.map test.less > test.css

Sollte dies als letzte Zeile ausgeben:

/*# sourceMappingURL=test.less.map */

Der Name der CSS-Ausgabedatei ist völlig irrelevant, nur der Link zur Karte ist von Bedeutung.

Der Name der CSS-Ausgabedatei ist völlig irrelevant

Nicht ganz, die Quellkarte enthält das Feld file , das auf das Ausgabe-CSS verweist (obwohl ich sehen kann, dass es in den neuesten technischen Revisionen optional ist).

So oder so, soweit ich das beurteilen kann, liegt das Problem in diesem Teil . Es geht also nur darum, das CSS-Ausgabeverzeichnis durch ein beliebiges Verzeichnis (Sourcemap-Verzeichnis?) Zu ersetzen, wenn output nicht definiert ist.
Nun, PRs sind willkommen (ich persönlich verwende keine Quellenkarten und habe keine Ahnung, welche Optionen durch diese Änderungen gebrochen werden können, um sie weiter zu testen).

Die Unterstützung externer Quellkarten zusammen mit Rohrleitungen bietet keinen funktionalen Wert. Es bietet * nix-Benutzern nur die Konvention, eine Datei an eine Datei weiterzuleiten, anstatt einen tatsächlichen Ausgabeparameter anzugeben.

Es macht keinen Sinn, eine externe Quellzuordnung zu generieren und dann die Ausgabe-CSS an eine weitere Operation weiterzuleiten.

Piping bedeutet, dass weitere Änderungen in den nächsten Schritten der Kette vorgenommen werden oder dass das CSS (und die Quellzuordnung) verbraucht werden, um im letzten Schritt von einer Webserveranwendung bereitgestellt zu werden.

Alle Änderungen an der CSS-Ausgabe von Less würden die von Less generierte Quellzuordnung ungültig machen. Um die Quellzuordnung wieder gültig zu machen, müssen Sie diese Änderungen in einer anderen Quellzuordnung verfolgen und diese dann mit der ursprünglichen Ausgabe von Less zusammenführen, um eine zusammengesetzte Quellzuordnung zu erstellen, die die Zuordnung auf den richtigen Inhalt in den ursprünglichen .less-Dateien wiederherstellt .

Alles, was sich weiter unten in der Kette der Rohrleitungsoperationen befindet, hat keinen Verweis mehr auf die externe Quellkarte, da es nicht mehr in die Rohrleitung gesendet wird. Daher kann es dies nicht tun und Sie stecken immer mit einer kaputten Quellenkarte fest.

Und natürlich; Wenn der letzte Schritt der Kette die kompilierte CSS- und Quellzuordnung bedienen soll: das gleiche Problem. Kein Verweis auf die Karte. (Wie werden Sie beide Dateien überhaupt als Antwort auf eine Anfrage bereitstellen? Inlining der Quellkarte? Warum dann nicht gleich weniger mit einer Inline-Karte kompilieren?)

Ich würde eher die Klarheit und Benutzerführung (z. B. "In die Grube des Erfolgs fallen") bevorzugen, eine Kombination von Operationen nicht zuzulassen, die nur dazu führen kann, dass Probleme mit generierten Artefakten auftreten.

Die Unterstützung externer Quellkarten zusammen mit Rohrleitungen bietet keinen funktionalen Wert. Es bietet * nix-Benutzern nur die Konvention, eine Datei an eine Datei weiterzuleiten, anstatt einen tatsächlichen Ausgabeparameter anzugeben.

Einverstanden. Wenn ein Ausgabedateiname angegeben werden soll, sollte er als Argument für den Compiler lessc .

Wurden Rohrleitungen in der Vergangenheit dokumentiert? Wenn nicht, dann ist es ein strittiger Punkt und wir können nur das aktuelle Verhalten dokumentieren. Wenn ja, müssen wir darauf achten, vergangene und derzeit nicht unterstützte Verhaltensweisen zu dokumentieren.

Wurden Rohrleitungen in der Vergangenheit dokumentiert?

Piping funktioniert durch Umleiten von Streams wie stdout oder stderr. Wenn lessc keinen Ausgabedateinamen erhält, wird es in stdout ausgegeben. In diesem Sinne wurde die Rohrleitung immer offiziell unterstützt und sollte auch weiterhin unterstützt werden. Sie würden wahrscheinlich eine Menge vernünftiger Anwendungsfälle brechen, wenn Menschen, die sich auf Pipes verlassen, Just-in-Time-kompilierte Dateien mit weniger Dateien an die Serveranwendung kommunizieren, die sie als CSS bereitstellen müssen.

Wenn Sie Piping zusammen mit einer Quellkarte verwenden möchten, ist dies immer noch auf vernünftige Weise möglich:
Sie müssten es zu einer Inline-Quellkarte machen und sich dann auf weitere Verarbeitungsschritte in der Pipe verlassen, um die Inline-Karte zu dekodieren. Änderungen darin zusammenführen; und wenden Sie es erneut als Inline-Quellzuordnung an, wenn diese Schritte das vom lessc-Compiler kompilierte CSS weiter ändern.

Wenn Sie dann aus Gründen der Leistung eine externe Quellkarte wünschen, vermeiden Sie, dass die zusätzlichen Bytes der Inline-Karte an alle Besucher gesendet werden. - Der letzte Schritt in der Pipeline sollte die Inline-Quellzuordnung abbrechen und zwei Dateien ausgeben: eine CSS-Datei und eine Zuordnungsdatei.

Es macht keinen Sinn, eine externe Quellzuordnung zu generieren und dann die Ausgabe-CSS an eine weitere Operation weiterzuleiten.

Piping bedeutet, dass weitere Änderungen in den nächsten Schritten der Kette vorgenommen werden oder dass das CSS (und die Quellzuordnung) verbraucht werden, um im letzten Schritt von einer Webserveranwendung bereitgestellt zu werden.

Ich bin mit dem zitierten Gefühl nicht einverstanden, und ich denke, es ist falsch anzunehmen, was sich auf der anderen Seite einer bestimmten Pfeife befindet. Was ist, wenn die Pipe irgendwo hochgeladen wird? Was ist, wenn die Pipe das resultierende CSS bereitstellt, der Client jedoch nicht immer die Quellkarte benötigt?

Da das Flag --source-map-url implementiert ist, sollte dieser Anwendungsfall meines Erachtens unterstützt werden.

In jedem Fall sollten Benutzer keine unergründlichen, nicht erfassten Fehler sehen, insbesondere wenn sie Flags aus dem Hilfetext übergeben.

Nur meine 2 Cent, nachdem ich durch dieses Problem blockiert wurde.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen