Vm2: Ajouter le module `coffee-script` comme dépendance

Créé le 8 avr. 2017  ·  23Commentaires  ·  Source: patriksimek/vm2

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

wontfix

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

Tous les 23 commentaires

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

Cette page vous a été utile?
0 / 5 - 0 notes