Handlebars.js: Usando o Handlebars com aviso de webpack require.extentions não suportado

Criado em 4 fev. 2015  ·  10Comentários  ·  Fonte: handlebars-lang/handlebars.js

Existe alguma maneira de remover ou desabilitar esses avisos ao carregar o Handlebars com o Webpack?

AVISO em ./~/handlebars/lib/index.js
require.extensions não é suportado pelo webpack. Use um carregador em vez disso.

AVISO em ./~/handlebars/lib/index.js
require.extensions não é suportado pelo webpack. Use um carregador em vez disso.

AVISO em ./~/handlebars/lib/index.js
require.extensions não é suportado pelo webpack. Use um carregador em vez disso.

Comentários muito úteis

@kpdecker @seeliang : Eu só quero que os outros saibam que o alias de guidão funciona.

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

Obrigado @kpdecker.

Todos 10 comentários

Eu recomendaria pré-compilar usando algo como handlebars-loader e utilizando o módulo handlebars/runtime . Caso contrário, você deve usar uma das compilações do lado do cliente via bower, pois elas não possuem nenhum código específico do nó.

Eu recomendaria pré-compilar usando algo como handlebars-loader e utilizando o módulo handlebars/runtime.

@kpdecker Como faríamos isso? Eu tenho o handlebars 1.3.0 e o handlebars-loader ^1.0.2 ambos instalados, então eu tenho um módulo AMD que se parece com isso:

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

e na configuração do webpack eu tenho:

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

para que o hbs! mapeie para o handlebars-loader. Então, quando executo o webpack, recebo esses avisos familiares:

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

o que estou perdendo? O que devo fazer com handlebars/runtime ?

Tudo bem, então adicionar um alias para guidão parece ter se livrado dos avisos:

{
  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'
    }
  }
}

Esse parece ser o truque, mas ainda tenho outros erros para descobrir antes que qualquer coisa possa ser executada, então saberei se isso funciona.

Olá, @kpdecker ,

Obrigado pelo seu feedback.
é meio que funcionando.

estou tendo o mesmo problema, é bastante interessante que, se eu adicionar a seção "resolver" do @trusktr ('handlebars/runtime.js'), execute o webpack e obterei o "Handlebars.compile não é uma função"

Eu perdi alguma coisa?

Muito Obrigado

O tempo de execução não inclui o compilador. Você precisará pré-compilar seu modelo, que é a melhor prática. Se você absolutamente precisa compilar modelos no cliente e está bem com o custo (inicialização e tamanho do arquivo), então você desejará usar o alias do guidão para algo como handlebars/dist/handlebars.js

Obrigado @kpdecker ,
vou tentar isso

Eu também arquivei #1102 para ver se isso pode ser mais limpo para pessoas que querem o tempo de execução inteiro.

@kpdecker @seeliang : Eu só quero que os outros saibam que o alias de guidão funciona.

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

Obrigado @kpdecker.

Para outros olhando aqui

Esta é a melhor solução que encontrei
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
aqui https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867

Obrigado 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()]
}

Também funciona.

Esta página foi útil?
0 / 5 - 0 avaliações