Bootstrap-multiselect: Módulo não encontrado: Erro: Não é possível resolver 'knockout' em '~/node_modules/bootstrap-multiselect/dist/js'

Criado em 4 dez. 2019  ·  8Comentários  ·  Fonte: davidstutz/bootstrap-multiselect

Enfrentando este problema com ^0.9.13-1:

ERRO em ./~/bootstrap-multiselect/dist/js/bootstrap-multiselect.js
Módulo não encontrado: Erro: Não é possível resolver 'knockout' em '/Users/Downloads/projectX/node_modules/bootstrap-multiselect/dist/js'
@ ./~/bootstrap-multiselect/dist/js/bootstrap-multiselect.js 51:8-47
@ ./public/javascripts/datatable-gc.js
@ ./public/javascripts/speciesTree.js
@ ./public/javascripts/render_viewer.js
@ multi webpack-hot-middleware/client ./public/javascripts/render_viewer.js

Comentários muito úteis

Eu também tive isso em conjunto com
AVISO em ./node_modules/bootstrap-multiselect/dist/js/bootstrap-multiselect.js
48:48-55 Dependência crítica: a função require é usada de forma que as dependências não podem ser extraídas estaticamente

Percebo no changelog deste pacote que algum trabalho foi feito com relação ao uso de requirejs ou require etc, eu mesmo não entendo, pois não tenho certeza de quais alterações foram feitas e para qual finalidade. Mas pode ver o padrão

@davidstutz - existe alguma razão pela qual a lista devDependencies em package.json na tag 0.9.15 é diferente do que você obtém quando baixa do NPM? ou seja, knockout não está incluído no pacote repos.json em nenhum lugar, mas quando você baixa do npm, tem knockout: "*" lá.

Todos 8 comentários

Mesmo problema após a atualização para a versão mais recente.
Alguma ideia?

Nenhuma solução ainda, todas as referências estão atualizadas também.

Eu também tive isso em conjunto com
AVISO em ./node_modules/bootstrap-multiselect/dist/js/bootstrap-multiselect.js
48:48-55 Dependência crítica: a função require é usada de forma que as dependências não podem ser extraídas estaticamente

Percebo no changelog deste pacote que algum trabalho foi feito com relação ao uso de requirejs ou require etc, eu mesmo não entendo, pois não tenho certeza de quais alterações foram feitas e para qual finalidade. Mas pode ver o padrão

@davidstutz - existe alguma razão pela qual a lista devDependencies em package.json na tag 0.9.15 é diferente do que você obtém quando baixa do NPM? ou seja, knockout não está incluído no pacote repos.json em nenhum lugar, mas quando você baixa do npm, tem knockout: "*" lá.

Qualquer atualização?

Você pode tentar adicionar essas linhas a webpack.config.js

plugins: [
  new webpack.ProvidePlugin({
      jQuery: 'jquery',
      'window.jQuery': 'jquery',
  })
],
...
resolve: {
    ...
    alias: {
      // path to your jquery in node_modules
      'jquery': path.resolve(__dirname, 'node_modules/jquery/dist/jquery'),
    }
},
...
module: {
    rules: [
      ...,
      {
        test: require.resolve('bootstrap-multiselect/dist/js/bootstrap-multiselect'),
        use: 'imports-loader?define=>false,this=>window',
      },
      ...
]

funciona para mim

Alguma atualização sobre este?

Para o projeto Ruby on Rails com webpacker, tive que adicionar isso a environment.js para que funcionasse:

environment.loaders.append('this-window', {
  test: /bootstrap-multiselect/,
  use: [
    {
      loader: 'imports-loader',
      options: {
        wrapper: 'window',
        additionalCode: 'var define = false;',
      },
    },
  ],
});

+ yarn add imports-loader . Ele ainda mostra dois avisos na compilação, mas funciona.

Instalei o bootstrap-multiselect 0.9.15 e recebi o erro Module not found: Can't resolve 'knockout' in '/Users/aroshasumanaweera/node_modules/bootstrap-multiselect/dist/js .
Minha solução foi instalar o knockout por uma questão de dependência,
que funcionou!!.
Correr npm i knockout

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

Questões relacionadas

webakimbo picture webakimbo  ·  4Comentários

Calaelen picture Calaelen  ·  9Comentários

psyclight picture psyclight  ·  4Comentários

fitucated picture fitucated  ·  6Comentários

Furgas picture Furgas  ·  8Comentários