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