Handlebars.js: Uso de Handlebars con advertencia de paquete web require.extensiones no admitidas

Creado en 4 feb. 2015  ·  10Comentarios  ·  Fuente: handlebars-lang/handlebars.js

¿Hay alguna forma de eliminar o deshabilitar estas advertencias al cargar Handlebars con Webpack?

ADVERTENCIA en ./~/handlebars/lib/index.js
require.extensions no es compatible con webpack. Utilice un cargador en su lugar.

ADVERTENCIA en ./~/handlebars/lib/index.js
require.extensions no es compatible con webpack. Utilice un cargador en su lugar.

ADVERTENCIA en ./~/handlebars/lib/index.js
require.extensions no es compatible con webpack. Utilice un cargador en su lugar.

Comentario más útil

@kpdecker @seeliang : Solo quiero que los demás sepan que la creación de alias en el manillar funciona.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

Gracias @kpdecker.

Todos 10 comentarios

Recomendaría precompilar usando algo como handlebars-loader y utilizando el módulo handlebars/runtime . De lo contrario, debe usar una de las compilaciones del lado del cliente a través de Bower, ya que no tienen ningún código específico de este nodo.

Recomendaría precompilar usando algo como handlebars-loader y utilizando el módulo handlebars/runtime.

@kpdecker ¿Cómo haríamos eso? Tengo handlebars 1.3.0 y handlebars-loader ^1.0.2 instalados, luego tengo un módulo AMD que se ve así:

define([
  'hbs!path/to/template' // path/to/template.hbs
],
function(template) {
  // ...
});

y en la configuración del paquete web tengo:

{
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  },
}

para que el hbs! se asigne al cargador del manillar. Luego, cuando ejecuto webpack, recibo esas advertencias familiares:

WARNING in /some/absolute/path/~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.

¿Qué me estoy perdiendo? ¿Qué se supone que debo hacer con handlebars/runtime ?

Muy bien, agregar un alias para manubrios parece haberse deshecho de las advertencias:

{
  resolve: {
    modulesDirectories: ['node_modules', 'src'],
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'handlebars': 'handlebars/runtime.js'
    }
  },
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  }
}

Ese parece ser el truco, pero todavía tengo otros errores que descifrar antes de que algo pueda ejecutarse, luego sabré si esto funciona.

Hola, @kpdecker ,

Gracias por tus comentarios.
es una especie de trabajo.

Tengo el mismo problema, es bastante interesante que si agrego la sección "resolver" de @trusktr ('handlebars/runtime.js') ejecute el paquete web y obtendré el mensaje "Handlebars.compile is not a function"

¿Me perdí algo?

muchas gracias

El tiempo de ejecución no incluye el compilador. Deberá compilar previamente su plantilla, que es la mejor práctica. Si absolutamente necesita compilar plantillas en el cliente y está de acuerdo con el costo (inicio y tamaño del archivo), entonces querrá alias handlebars a algo como handlebars/dist/handlebars.js

Gracias @kpdecker ,
probaré eso

También archivé el #1102 para ver si esto se puede hacer más limpio para las personas que quieren todo el tiempo de ejecución.

@kpdecker @seeliang : Solo quiero que los demás sepan que la creación de alias en el manillar funciona.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

Gracias @kpdecker.

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',
};
const nodeExternals = require('webpack-node-externals');
module.exports = {
  externals: [nodeExternals()]
}

También hace obras.

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