Lors de l'exécution de votre module via du code transformé par le webpack/babel, j'obtiens le problème suivant :
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
Dans cette ligne, vous utilisez le module coffee-script
, mais il n'est pas défini comme une dépendance de module.
Ainsi, lorsque Webpack essaie de mapper tous les éléments requis, il se bloque car il ne peut trouver le module coffee-script
nulle part.
UPD : il ne s'agit pas d'une demande de fonctionnalité, il s'agit d'un problème de dépendances du module vm2. Jusqu'à ce que ce module ait cette ligne présente, il ne fonctionnera pas avec l'option de compilateur spécifiée comme coffee-script
sur n'importe quel environnement sans module coffee-script installé.
Merci d'avoir signalé un problème. Je n'ai presque aucune expérience avec Webpack, donc je me trompe probablement, mais que se passe-t-il si vous ajoutez coffee-script
comme dépendance dans le projet parent ? Je suppose que les processus Webpack nécessitent la même chose que Node - il recherche tous les dossiers node_modules
jusqu'à la racine.
Je ne veux pas ajouter un coffee-script
comme dépendance de mon propre projet simplement parce que votre module l'exige. Je n'utilise pas coffee-script
.
Si vous utilisez le module de quelqu'un dans votre propre projet, vous devez le déclarer en tant que dépendance.
De plus, si quelqu'un installe votre module et que cette personne n'a pas de module coffee-script
installé nulle part (dans le projet ou global), cela déclenchera également cette erreur. Cela ne dépend pas de Webpack.
Ok, je pensais que vous utilisiez coffee-script. Dans ce cas, cette bibliothèque n'est pas compatible avec Webpack atm. Je vais essayer de comprendre cela si j'ai un peu de temps libre.
Il ne s'agit pas d'un cas de compatibilité avec webpack.
Il s'agit de la façon dont vous publiez et fournissez votre module à npm.
Je ne suis pas d'accord, cette bibliothèque fonctionne correctement sans coffee-script, il n'y a donc aucune raison de la lier en tant que dépendance requise. Il n'est utilisé que lorsque l'utilisateur déclare explicitement qu'il souhaite utiliser coffee-script. Je vais refactoriser cela en une sorte de mécanisme de plugin.
La raison en est que vous avez explicitement besoin du coffee-script
dans votre code, ce qui suppose qu'il devrait être installé d'une manière ou d'une autre.
Si vous avez déjà installé le coffee-script
sur votre machine - c'est correct et cela fonctionnera, sinon cela causera un problème lorsque je n'ai aucun coffee-script
installé nulle part et que je lance la machine virtuelle avec le jeu d'options du compilateur à l'un des 'coffeescript', 'coffee-script', 'cs' ou 'text/coffeescript' (comme indiqué dans https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).
De plus, je ne suis pas d'accord pour dire qu'il s'agit d'un feature request
car votre module ne fonctionne pas avec le compilateur coffee-script
s'il n'était pas déjà installé. Et la documentation ne dit rien sur l'exigence de coffee-script
à pré-installer.
Oui, vous avez décrit précisément comment cela fonctionne en ce moment. La bibliothèque s'attend à ce que l'utilisateur ait installé coffee-script si le compilateur est défini sur coffee.
Vous avez raison pour la doc, elle est à jour.
Oui, le correctif de la documentation ne résout pas le problème. Vous avez toujours la ligne require('coffee-script')
dans votre code, ce qui produira l'erreur, du moins pour webpack.
Oui, et comme je l'ai écrit dans le post précédent, je vais refactoriser cela en une sorte de mécanisme de plugin afin qu'il soit compatible avec le webpack.
Peu importe, s'il est si difficile pour vous d'exécuter une simple commande :
> npm install coffee-script --save
Je n'utiliserai plus ni n'attendrai votre projet pour résoudre le problème.
@patriksimek Personnellement, je vois l'avantage d'avoir une sorte de mécanisme de plugin.
Que diriez-vous de quelque chose de simple comme options.compiler
étant une fonction ?
Ensuite, les utilisateurs qui ont besoin de CoffeeScript peuvent définir options.compiler
sur (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); }
.
@dkfiresky Wow, vous vous attendiez vraiment à ce que je force des dizaines de milliers d'utilisateurs à télécharger coffee-script même s'ils n'en ont pas besoin simplement parce que vous n'êtes pas prêt à attendre une solution appropriée ? C'est triste.
@n-riesco En fait, cela est déjà pris en charge. Le problème est que la suppression de la prise en charge de l'option coffeescript
est un changement radical et j'aimerais d'abord essayer une meilleure solution (s'il y en a une).
@patriksimek J'attends de vous que vous livriez correctement votre module. L'utilisation de coffee-script relève de votre propre responsabilité. Si vous l'utilisez, vous devez le définir comme une dépendance. Si vous n'êtes pas d'accord, supprimez cette instruction require et l'option du compilateur qui indique coffee-script
comme option.
Ce problème a été créé car votre module ne fonctionne pas prêt à l'emploi. Attendre 18 jours pour que vous exécutiez une simple commande d'installation ressemble à une blague.
De plus, si vous indiquez que votre module compile coffee-script
, vous devez fournir ce module en tant que dépendance dans votre package.json .
vous vous attendiez vraiment à ce que je force des dizaines de milliers d'utilisateurs à télécharger coffee-script
C'est ce que vous avez fait par require('coffee-script')
dans votre code . Vous vous attendez à ce que j'installe coffee-script même si je ne l'utilise pas.
Attendre 18 jours pour que vous exécutiez une simple commande d'installation ressemble à une blague.
Tu t'attends toujours à ce que je fasse ce que j'ai dit que je ne ferais jamais. Encore une fois - ce module n'est pas compatible avec Webpack pour le moment, s'il vous plaît, n'utilisez pas cette bibliothèque.
@patriksimek ce module n'est ni compatible ni exécutable sur aucun environnement sans coffee-script
installé.
@dkfiresky Bien sûr, si vous le pensez. Je ne suis plus intéressé à vous convaincre que vous avez tort. Pouvons-nous s'il vous plaît arrêter cette discussion inutile?
@patriksimek oui, bien sûr. S'il vous plaît allez lire quelques docs npm.
Je reçois cela aussi dans un nouveau projet de réaction, avant d'ajouter vm2 en tant que dépendance, je n'avais aucune erreur à propos de coffee-script
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'
Même si le ton de la discussion n'était pas très constructif, je crois vraiment que coffee-script
devrait être ajouté comme dépendance. Ce serait une solution très simple et permettrait d'utiliser ce package dans divers environnements (par exemple Webpack, Next, etc.).
Commentaire le plus utile
@dkfiresky Wow, vous vous attendiez vraiment à ce que je force des dizaines de milliers d'utilisateurs à télécharger coffee-script même s'ils n'en ont pas besoin simplement parce que vous n'êtes pas prêt à attendre une solution appropriée ? C'est triste.
@n-riesco En fait, cela est déjà pris en charge. Le problème est que la suppression de la prise en charge de l'option
coffeescript
est un changement radical et j'aimerais d'abord essayer une meilleure solution (s'il y en a une).