Vm2: Fügen Sie das Modul „Kaffee-Skript“ als Abhängigkeit hinzu

Erstellt am 8. Apr. 2017  ·  23Kommentare  ·  Quelle: patriksimek/vm2

Beim Ausführen Ihres Moduls über Code, der vom Webpack/Babel transformiert wird, erhalte ich folgendes Problem:

Module not found: Error: Can't resolve 'coffee-script' in '/node_modules/vm2/lib'
 @ ./~/vm2/lib/main.js 19:10-34
 @ ./~/vm2/index.js
 @ ./lib/config.js
 @ ./lib/server.js

https://github.com/patriksimek/vm2/blob/master/lib/main.js#L19

In dieser Zeile verwenden Sie das Modul coffee-script , aber es ist nicht als Modulabhängigkeit definiert.
Wenn also Webpack versucht, alle Anforderungen abzubilden, stürzt es ab, weil es das Modul coffee-script nirgendwo finden kann.

UPD: Dies ist keine Funktionsanforderung, dies ist ein Problem mit den Abhängigkeiten des vm2-Moduls. Bis diese Zeile in diesem Modul vorhanden ist, funktioniert es nicht mit der als coffee-script angegebenen Compiler-Option in einer Umgebung, in der das Coffee-Script-Modul nicht installiert ist.

wontfix

Hilfreichster Kommentar

@dkfiresky Wow, du hast wirklich erwartet, dass ich Zehntausende Benutzer dazu zwingen würde, coffee-script herunterzuladen, auch wenn sie es nicht brauchen, nur weil du nicht bereit bist, auf eine richtige Lösung zu warten? Das ist traurig.

@n-riesco Tatsächlich wird dies bereits unterstützt. Das Problem ist, dass das Weglassen der Unterstützung für die Option coffeescript eine bahnbrechende Änderung ist und ich zuerst eine bessere Lösung ausprobieren möchte (falls es eine gibt).

Alle 23 Kommentare

Vielen Dank, dass Sie ein Problem gemeldet haben. Ich habe fast keine Erfahrungen mit Webpack, also liege ich wahrscheinlich falsch, aber was ist, wenn Sie coffee-script als Abhängigkeit im übergeordneten Projekt hinzufügen? Ich gehe davon aus, dass Webpack-Prozesse genauso erforderlich sind wie Node - es durchsucht alle node_modules -Ordner bis zum Stammverzeichnis.

Ich möchte kein coffee-script als Abhängigkeit meines eigenen Projekts hinzufügen, nur weil Ihr Modul es erfordert. Ich verwende coffee-script nicht.

Wenn Sie das Modul einer anderen Person in Ihrem eigenen Projekt verwenden, müssen Sie es als Abhängigkeit deklarieren.

Auch wenn jemand Ihr Modul installiert und diese Person nirgendwo ein coffee-script -Modul installiert hat (im Projekt oder global), wird dies ebenfalls diesen Fehler auslösen. Es hängt nicht von Webpack ab.

Ok, ich dachte, Sie verwenden Kaffee-Skript. In diesem Fall ist diese Bibliothek nicht webpack-kompatibel atm. Ich werde versuchen, das herauszufinden, wenn ich etwas Freizeit habe.

Dies ist kein Fall von Kompatibilität mit Webpack.

Es kommt darauf an, wie Sie Ihr Modul veröffentlichen und für npm bereitstellen.

Ich stimme nicht zu, diese Bibliothek funktioniert ohne Kaffee-Skript ordnungsgemäß, daher gibt es keinen Grund, sie als erforderliche Abhängigkeit zu verknüpfen. Es wird nur verwendet, wenn der Benutzer ausdrücklich angibt, dass er oder sie Coffee-Script verwenden möchte. Ich werde dies in eine Art Plugin-Mechanismus umgestalten.

Der Grund dafür ist, dass Sie coffee-script explizit in Ihrem Code benötigen, was davon ausgeht, dass es irgendwie installiert werden sollte.

Wenn Sie coffee-script bereits auf Ihrem Computer installiert haben – das ist in Ordnung und wird funktionieren, andernfalls wird es ein Problem verursachen, wenn ich nirgendwo coffee-script installiert habe und die VM mit gesetzter Compiler-Option gestartet habe zu einem von 'coffeescript', 'coffee-script', 'cs' oder 'text/coffeescript' (wie in https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).

Ich stimme auch nicht zu, dass dies ein feature request ist, da Ihr Modul nicht mit dem coffee-script -Compiler funktioniert, wenn es nicht bereits installiert wurde. Und die Dokumentation sagt nichts darüber aus, dass coffee-script vorinstalliert sein müssen.

Ja, Sie haben genau beschrieben, wie es jetzt funktioniert. Die Bibliothek erwartet, dass der Benutzer das Kaffee-Skript installiert hat, wenn der Compiler auf Kaffee eingestellt ist.

Sie haben Recht mit den Dokumenten, sie sind aktualisiert.

Ja, die Dokumentationskorrektur löst das Problem nicht. Sie haben immer noch die Zeile require('coffee-script') in Ihrem Code, die den Fehler erzeugt, zumindest für Webpack.

Ja, und wie ich im vorherigen Beitrag geschrieben habe, werde ich dies in eine Art Plugin-Mechanismus umgestalten, damit es Webpack-kompatibel ist.

Macht nichts, wenn es für Sie so schwer ist, einen einfachen Befehl auszuführen:

> npm install coffee-script --save

Ich werde Ihr Projekt nicht mehr verwenden oder darauf warten, dass es das Problem behebt.

@patriksimek Persönlich sehe ich den Vorteil, eine Art Plugin-Mechanismus zu haben.

Wie wäre es, wenn etwas Einfaches wie options.compiler eine Funktion wäre?

Dann könnten Benutzer, die CoffeeScript benötigen, options.compiler auf (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); } setzen.

@dkfiresky Wow, du hast wirklich erwartet, dass ich Zehntausende Benutzer dazu zwingen würde, coffee-script herunterzuladen, auch wenn sie es nicht brauchen, nur weil du nicht bereit bist, auf eine richtige Lösung zu warten? Das ist traurig.

@n-riesco Tatsächlich wird dies bereits unterstützt. Das Problem ist, dass das Weglassen der Unterstützung für die Option coffeescript eine bahnbrechende Änderung ist und ich zuerst eine bessere Lösung ausprobieren möchte (falls es eine gibt).

@patriksimek Ich erwarte, dass Sie Ihr Modul korrekt liefern. Die Verwendung von coffee-script erfolgt auf eigene Verantwortung. Wenn Sie es verwenden, müssen Sie es als Abhängigkeit definieren. Wenn Sie nicht einverstanden sind, dann entfernen Sie diese require-Anweisung und die Compiler-Option, die coffee-script als Option angibt.

Dieses Problem wurde erstellt, weil Ihr Modul nicht sofort einsatzbereit ist. 18 Tage darauf zu warten, dass Sie einen einfachen Installationsbefehl ausführen, klingt wie ein Witz.

Wenn Sie außerdem angeben, dass Ihr Modul coffee-script kompiliert, müssen Sie dieses Modul als Abhängigkeit in Ihrer package.json bereitstellen .

Sie haben wirklich erwartet, dass ich Zehntausende Benutzer dazu zwingen würde, coffee-script herunterzuladen

Das, was Sie mit require('coffee-script') in Ihrem Code getan haben. Sie erwarten von mir, dass ich coffee-script installiere, auch wenn ich es nicht benutze.

18 Tage darauf zu warten, dass Sie einen einfachen Installationsbefehl ausführen, klingt wie ein Witz.

Du erwartest immer noch, dass ich das tue, was ich gesagt habe, dass ich es niemals tun werde. Also noch einmal - dieses Modul ist im Moment nicht mit Webpack kompatibel, bitte verwenden Sie diese Bibliothek nicht.

@patriksimek Dieses Modul ist in keiner Umgebung kompatibel oder lauffähig, ohne dass coffee-script installiert ist.

@dkfiresky Sicher, wenn du so denkst. Ich bin nicht länger daran interessiert, Sie davon zu überzeugen, dass Sie falsch liegen. Können wir diese nutzlose Diskussion bitte beenden?

@patriksimek ja, sicher. Bitte lesen Sie einige npm-Dokumente.

Ich bekomme dies auch in einem frischen React-Projekt, bevor ich vm2 als Abhängigkeit hinzugefügt habe, hatte ich keine Fehler bezüglich des Kaffee-Skripts

Failed to compile.

/Users/mark/node_modules/coffee-script/lib/coffee-script/coffee-script.js
Module not found: Can't resolve 'module' in '/Users/mark/node_modules/coffee-script/lib/coffee-script'

Auch wenn der Ton der Diskussion nicht sehr konstruktiv war, glaube ich wirklich, dass coffee-script als Abhängigkeit hinzugefügt werden sollte. Es wäre eine sehr einfache Lösung und würde es ermöglichen, dieses Paket in verschiedenen Umgebungen (z. B. Webpack, Next usw.) zu verwenden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen