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.
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.
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).