Vm2: Agregue el módulo `coffee-script` como una dependencia

Creado en 8 abr. 2017  ·  23Comentarios  ·  Fuente: patriksimek/vm2

Mientras ejecuto su módulo a través del código transformado por webpack/babel, aparece el siguiente problema:

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

En esta línea, está utilizando el módulo coffee-script , pero no está definido como una dependencia del módulo.
Entonces, cuando el paquete web intenta mapear todos los requisitos, falla porque no puede encontrar el módulo coffee-script en ninguna parte.

UPD: esto no es una solicitud de función, este es un problema de dependencias del módulo vm2. Hasta que este módulo tenga presente esta línea , no funcionará con la opción del compilador especificada como coffee-script en ningún entorno sin el módulo coffee-script instalado.

wontfix

Comentario más útil

@dkfiresky Wow, ¿realmente esperaba que obligara a decenas de miles de usuarios a descargar el script de café incluso si no lo necesitan solo porque no está dispuesto a esperar una solución adecuada? Eso es triste.

@n-riesco En realidad, esto ya es compatible. El problema es que eliminar el soporte para la opción coffeescript es un cambio importante y me gustaría probar primero una solución mejor (si la hay).

Todos 23 comentarios

Gracias por informar un problema. Casi no tengo experiencia con Webpack, así que probablemente me equivoque, pero ¿qué sucede si agrega coffee-script como una dependencia en el proyecto principal? Supongo que los procesos de Webpack requieren la misma forma que Node: busca en todas las carpetas node_modules hasta la raíz.

No quiero agregar coffee-script como una dependencia de mi propio proyecto solo porque su módulo lo requiera. No uso coffee-script .

Si está utilizando el módulo de alguien en su propio proyecto, debe declararlo como una dependencia.

Además, si alguien instalará su módulo y esa persona no tiene un módulo coffee-script instalado en ninguna parte (en el proyecto o global), también generará ese error. No depende de Webpack.

Ok, pensé que estabas usando coffee-script. En ese caso, esta biblioteca no es compatible con webpack atm. Trataré de resolver esto si tengo algo de tiempo libre.

Este no es un caso de compatibilidad con webpack.

Es un caso de cómo publica y proporciona su módulo a npm.

No estoy de acuerdo, esta biblioteca funciona correctamente sin script de café, por lo que no hay razón para vincularla como una dependencia requerida. Solo se usa cuando el usuario declara explícitamente que quiere usar el script de café. Refactorizaré esto a algún tipo de mecanismo de complemento.

La razón es que requiere explícitamente el coffee-script en su código, lo que supone que debe instalarse de alguna manera.

Si ya tiene el coffee-script instalado en su máquina, está bien y funcionará; de lo contrario, causará un problema cuando no tenga coffee-script instalado en ninguna parte y lancé la máquina virtual con la opción del compilador configurada. a uno de 'coffeescript', 'coffee-script', 'cs' o 'text/coffeescript' (como se indica en https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).

Además, no estoy de acuerdo con que este sea un feature request ya que su módulo no funciona con el compilador coffee-script si aún no estaba instalado. Y la documentación no dice nada sobre el requisito de coffee-script para ser preinstalado.

Sí, ha descrito con precisión cómo funciona en este momento. La biblioteca espera que el usuario tenga instalado el script de café si el compilador está configurado para café.

Tienes razón sobre los documentos, está actualizado.

Sí, la corrección de la documentación no resuelve el problema. Todavía tiene la línea require('coffee-script') en su código, lo que producirá el error, al menos para el paquete web.

Sí, y como escribí en la publicación anterior, refactorizaré esto a algún tipo de mecanismo de complemento para que sea compatible con el paquete web.

No importa, si es tan difícil para ti ejecutar un simple comando:

> npm install coffee-script --save

Ya no usaré ni esperaré a que su proyecto solucione el problema.

@patriksimek Personalmente, veo el beneficio de tener algún tipo de mecanismo de complemento.

¿Qué tal algo simple como options.compiler siendo una función?

Luego, los usuarios que necesitan CoffeeScript podrían establecer options.compiler en (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); } .

@dkfiresky Wow, ¿realmente esperaba que obligara a decenas de miles de usuarios a descargar el script de café incluso si no lo necesitan solo porque no está dispuesto a esperar una solución adecuada? Eso es triste.

@n-riesco En realidad, esto ya es compatible. El problema es que eliminar el soporte para la opción coffeescript es un cambio importante y me gustaría probar primero una solución mejor (si la hay).

@patriksimek Espero que entregue su módulo correctamente. El uso de coffee-script es su propia responsabilidad. Si lo usa, debe definirlo como una dependencia. Si no está de acuerdo, elimine esa instrucción require y la opción del compilador que establece coffee-script como una opción.

Este problema se creó porque su módulo no funciona de inmediato. Esperar 18 días para ejecutar un comando de instalación simple suena como una broma.

Además, si declara que su módulo compila coffee-script , debe entregar ese módulo como una dependencia en su paquete.json .

realmente esperabas que obligara a decenas de miles de usuarios a descargar coffee-script

Eso es lo que hiciste por require('coffee-script') en tu código . Esperas que instale coffee-script incluso si no lo uso.

Esperar 18 días para ejecutar un comando de instalación simple suena como una broma.

Todavía esperas que haga lo que dije que nunca haría. De nuevo, este módulo no es compatible con Webpack en este momento, por favor, no use esta biblioteca.

@patriksimek este módulo no es compatible ni ejecutable en ningún entorno sin coffee-script instalado.

@dkfiresky Claro, si así lo crees. Ya no me interesa convencerte de que estás equivocado. ¿Podemos detener esta discusión inútil?

@patriksimek sí, seguro. Vaya a leer algunos documentos de npm.

También obtuve esto en un nuevo proyecto de reacción, antes de agregar vm2 como una dependencia, no tuve errores sobre el script de café

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'

Aunque el tono de la discusión no fue muy constructivo, realmente creo que coffee-script debería agregarse como una dependencia. Sería una solución muy sencilla y permitiría utilizar este paquete en varios entornos (por ejemplo, Webpack, Next, etc.).

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

patriksimek picture patriksimek  ·  5Comentarios

XmiliaH picture XmiliaH  ·  19Comentarios

seanc picture seanc  ·  3Comentarios

KonradLinkowski picture KonradLinkowski  ·  10Comentarios

wintertime-inc picture wintertime-inc  ·  5Comentarios