Recibo el siguiente error simplemente usando require manillar.
▶ webpack --display-modules
Hash: bdb0fe35e2f8bde783e5
Version: webpack 1.12.12
Time: 116ms
Asset Size Chunks Chunk Names
bundle.main.js 2.82 kB 0 [emitted] main
[0] ./src/index.js 150 bytes {0} [built]
[1] ./~/handlebars/lib/index.js 792 bytes {0} [built] [3 warnings] [3 errors]
WARNING in ./~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.
WARNING in ./~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.
WARNING in ./~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.
ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars/compiler/printer in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
@ ./~/handlebars/lib/index.js 9:14-64
ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve module 'fs' in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
@ ./~/handlebars/lib/index.js 17:11-24
ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
@ ./~/handlebars/lib/index.js 7:17-50
Mi index.js
var handlebars = require('handlebars');
Mi package.json
"dependencies": {
"handlebars": "^4.0.5"
}
Como se menciona en el n. ° 1102 agregando la línea
"browser": "dist/handlebars.js",
to handlebars 'package.json resolvió esto por mí.
Suena como un problema con Webpack, no con Handlebars.
La ruta predeterminada normal para cualquier archivo principal de módulo de nodo es / node_modules / module_name / dist.
Ahí es donde una aplicación de nodo asumirá que se encuentran; esto significa que Webpack está manejando require (); diferente al nodo.
Lo solucioné con ...
resolve: {
alias: {
handlebars: 'handlebars/dist/handlebars.min.js'
}
}
en mi configuración de paquete web
gracias @gilesbradshaw : +1:: sonrisa:
@abhisekp, ¿ se resolvió esto? Por favor cierre si es así.
@rafde No lo he verificado, pero
Gracias por el recordatorio. :rubor:
El problema aún se reproduce si necesito manubrios en algún lugar de .js:
var Handlebars = require('handlebars');
Handlebars.registerHelper('greet', function(name) {
return 'Hello, name=' + name + '!';
});
pero si quito esta linea
var Handlebars = require('handlebars');
el problema se ha ido
@gilesbradshaw
¡Muchos gracias!
También obtengo este error cuando uso manubrios con un proyecto CLI de Angular 2. No puedo cambiar la configuración de mi paquete web porque el equipo de Angular CLI decidió ocultar los detalles del paquete web a los usuarios de Angular CLI y no admiten oficialmente la modificación de la configuración del paquete web.
@oocx Puede importar el archivo JS desde la carpeta node_modules así
import 'handlebars/dist/handlebars.min.js';
¡Esto funciona bien!
Para que esto funcione en un proyecto angular 4 tuve que hacer esto:
importar * como handleBars de 'handlebars / dist / handlebars';
normalmente solo haría esto:
importar * como handleBars de 'manubrios';
La línea anterior funciona bien en un proyecto mecanografiado en nodo, pero no en angular 4.
HandleBars es el único proyecto en el que tengo que importar de esta manera. Me preocupa que voy a tener un problema en el futuro. Parece que HandleBars no funciona bien con el paquete web de angular.
Podría echar un vistazo si alguien configura un proyecto de ejemplo mínimo que reproduzca el problema. Sin embargo, no hay promesas sobre el "cuándo" ...
@ swilliams-a3digital Obtener Could not find a declaration file for module
declare module 'handlebars' o agregar @ types / handlebars no ayuda. Como solucionaste esto?
Para otros que buscan aquí
Esta es la mejor solución que he encontrado.
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
aquí https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867
Gracias a @mAAdhaTTah
UPD:
//fix handlebars warnings
config.resolve.alias = {
...config.resolve.alias,
'handlebars/runtime': 'handlebars/dist/cjs/handlebars.runtime',
'handlebars': 'handlebars/dist/cjs/handlebars.runtime',
};
Esto está retrasado.
Esta biblioteca handlebars
debería haber solucionado este error.
Sin embargo, descuidan e ignoran.
La solución alternativa es reemplazar:
import Handlebars from 'handlebars'
con:
import Handlebars from 'handlebars/dist/cjs/handlebars'
@catamphetamine si tiene una buena solución a este problema, puede presentar una solicitud de extracción. Mientras no rompa nada, fusionaré y publicaré una nueva versión. Cosas como const Handlebars = require('handlebars')
en NodeJS y las configuraciones existentes con versiones anteriores de webpack aún deberían funcionar.
Sobre el "Sin embargo, descuidan e ignoran":
El problema del manillar es que no hay muchos colaboradores y de momento, por lo que veo, soy el único activo. Bueno, más o menos activo. Son las 23:26 ahora y este es el momento en que suelo venir a trabajar en mis proyectos privados, porque tengo una familia un trabajo diurno y otras aficiones.
Entonces, cuando escribe "Sin embargo, ellos descuidan e ignoran", no hay muchos "ellos". Es casi seguro que no hay "ellos" a los que se les pague por trabajar en este proyecto. Ayudo a la gente, porque es divertido hablar con la gente y porque es divertido resolver problemas, corregir errores y escribir pruebas. Porque yo mismo estoy usando Handlebars en un par de proyectos, y porque se siente bien estar parado en la luz del escenario de vez en cuando. Pero no creo que sea mi deber hacerlo. Así que elijo los temas que me gustan, principalmente los que son rápidos y claros.
Entonces, si estás usando Handlebars y tienes un problema y nadie lo va a resolver, tal vez deberías intentar aportar una solución tú mismo.
Sin embargo, reabriré el problema porque no parece estar resuelto.
porque se siente bien pararse en la luz del escenario de vez en cuando.
También estoy haciendo código abierto para divertirme, aunque no es tan popular como esta biblioteca.
Y también para una línea o dos en mi CV. Ayuda a conseguir un mejor trabajo.
Puedo ver que no obtiene muchas ganancias en lugar de solo diversión porque técnicamente no es su proyecto, como @ nknapp / handlebars.js
Lo mantienes y @wycats obtiene todo el crédito y las estrellas de github en lo que respecta a la barra de URL.
Ok, al menos ahora sabemos que este proyecto ya no se mantiene tan activamente.
Aún así, se usa en muchos lugares (incluido el legado), supongo.
Por ejemplo, SendGrid lanzó recientemente "plantillas personalizables" usando este idioma handlebars
.
https://sendgrid.com/blog/how-to-use-sendgrids-dynamic-templates-for-your-transactional-emails/
https://github.com/sendgrid/sendgrid-nodejs/issues/221
En cuanto a la posible solución, sería dividir el paquete en handlebars
y handlebars/register
como hizo Babel con sus babel
y babel/register
.
Solo instalan el gancho require()
cuando hacen import 'babel/register'
.
Eso sería un cambio importante para otra versión principal, pero puedo ver que lo más probable es que no haya tal versión.
También se podría crear un archivo en la raíz llamado algo como core.js
( module.exports = require('handlebars/dist/cjs/handlebars')
) y luego los usuarios de Webpack requerirían handlebars/core
lugar de handlebars/dist/cjs/handlebars
(junto con una línea en el archivo README).
El creador de Webpack también es de Alemania.
De todos modos, import Handlebars from 'handlebars/dist/cjs/handlebars'
funciona y creo que no necesita cambiar nada en la biblioteca, solo tal vez agregue una línea de documentación a README que para Webpack use import Handlebars from 'handlebars/dist/cjs/handlebars'
lugar de la importación normal.
Por cierto, no me refería específicamente a usted porque no dejó un comentario negativo antes en este número.
Me refería a @methodbox y su comentario:
Suena como un problema con Webpack, no con Handlebars.
Y @rafde y su comentario:
Parece un problema con su configuración, ya que nadie más tiene este problema.
Su comentario no afirmó que Webpack fuera "incorrecto" ni nada, por lo que no hay palabras incorrectas de su parte:
Podría echar un vistazo si alguien configura un proyecto de ejemplo mínimo que reproduzca el problema. Sin embargo, no hay promesas sobre el "cuándo" ...
No dijiste que "Webpack lo está haciendo mal, cierra el problema", por lo que tus comentarios están bien.
@nknapp
De todos modos, import Handlebars from 'handlebars/dist/cjs/handlebars'
funciona bien y creo que no necesitas cambiar nada en la biblioteca.
Quizás agregue una línea al archivo README que diga que "Si está usando Webpack, entonces import Handlebars from 'handlebars/dist/cjs/handlebars'
lugar de import Handlebars from 'handlebars'
.
import Handlebars from 'handlebars/dist/cjs/handlebars'
está bien y funciona.
import Handlebars from 'handlebars/dist/cjs/handlebars
Me funcionó a partir de este comentario.
Sin embargo, estoy de acuerdo con
Una mejor documentación vale mucho y no mataría a nadie agregar esa línea a la página de instalación .
Todos construimos grandes cosas y queremos que la gente las use.
Pero adivina qué, si la documentación apesta ... también lo hace el proyecto porque nadie más que tú podrá entenderlo.
Y recuerde ... la gente le teme a lo que no entiende.
-end despotricar-
Sin embargo, aprecio sus esfuerzos en la biblioteca.
Ser un desarrollador de código abierto es a menudo una odisea ingrata y dolorosa con muy poca recompensa.
En realidad, no intento que la gente use Handlebars. Solo intento ayudar a las personas que ya han decidido usarlo.
Actualmente estoy construyendo un nuevo sitio de documentación (siempre que me quede algo de tiempo) y lo incluiré allí.
Debería resolverse en el n. ° 1102
Comentario más útil
Lo solucioné con ...
en mi configuración de paquete web