Moment: Webpack - Dependência crítica: o pedido de uma dependência é uma expressão com 2.25.0

Criado em 1 mai. 2020  ·  35Comentários  ·  Fonte: moment/moment

Esta manhã eu atualizei o momento de 2.24.0 para 2.25.0 e comecei a receber este aviso do meu Webpack build:
Critical dependency: the request of a dependency is an expression

Versões que estou usando:
gole - 4.0.2
webpack - 4.43.0
babel - 7.9.6

Nenhuma outra atualização ocorreu no meio. Apenas moment.js foi atualizado e o aviso apareceu.

Comentários muito úteis

O mesmo aqui, bloquear a versão do pacote para 2.24.0 ajuda por agora ...

Todos 35 comentários

o mesmo problema

o mesmo problema
depois de instalar o momento no aplicativo laravel vue.
WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13 Critical dependency: the request of a dependency is an expression @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js ./resources/sass/app.scss

O mesmo aqui, bloquear a versão do pacote para 2.24.0 ajuda por agora ...

O mesmo problema aqui! Crítico!

Eu tive o mesmo problema! Bloqueado o meu para 2.24.0 e consertei minha construção

Destacado

Mesmo aqui. 2.25.0 apresenta esse problema, mas não 2.24.0. Alterações em 2092: 16-2096: 17 em moment.js é a raiz.

Mesmo problema, mas estranhamente apenas quando executado como dev (este é um projeto nuxt). Os problemas parecem estar em src/lib/locale/locales.js linha 78-82,

Mudando:
`` `javascript
aliasRequire (
(typeof __dirname! == undefined? __dirname: '.') +
'/ locale /' +
nome
);
to: javascript
aliasRequire ('../ locale /' + nome);
`` ``
Corrige o problema para mim

Eu o recebo tanto nas compilações de dev e prod com minha configuração.

O mesmo aqui, bloquear a versão do pacote para 2.24.0 ajuda por agora ...

Sim, essa é a solução alternativa óbvia, mas não é realmente uma solução :-).

Também estou recebendo o mesmo aviso e erros de console a seguir, em um navegador da web para aplicativo angular ao chamar moment.format() .

ERROR TypeError: __WEBPACK_IMPORTED_MODULE_2_moment__ is not a function
(main.bundle.js:11539)
Show 102 more frames

mesmo aqui

Também confirmado

Espere um segundo - isso é um aviso, não um erro. Ainda produz um pacote?

Com o momento 2.25.0:

% ./node_modules/.bin/webpack
Hash: 42b60d02778538c038dc
Version: webpack 4.43.0
Time: 497ms
Built at: 05/01/2020 4:56:43 PM
    Asset      Size  Chunks             Chunk Names
bundle.js  72.2 KiB       0  [emitted]  main
Entrypoint main = bundle.js
[13] ./node_modules/moment/src/lib/units/month.js + 1 modules 9.92 KiB {0} [built]
     |    2 modules
[26] ./node_modules/moment/src/lib/create/valid.js + 1 modules 1.88 KiB {0} [built]
     |    2 modules
[36] ./node_modules/moment/src/lib/create/from-anything.js + 8 modules 25.1 KiB {0} [built]
     |    9 modules
[46] (webpack)/buildin/harmony-module.js 573 bytes {0} [built]
[47] ./node_modules/moment/src/lib/locale sync 160 bytes {0} [optional] [built]
[48] ./src/index.js + 54 modules 84.6 KiB {0} [built]
     | ./src/index.js 62 bytes [built]
     |     + 54 hidden modules
    + 43 hidden modules

WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/index.js

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

E funciona.

Com [email protected] :

% ./node_modules/.bin/webpack
Hash: c16dbd62d51ed42203b2
Version: webpack 4.43.0
Time: 559ms
Built at: 05/01/2020 4:58:27 PM
    Asset     Size  Chunks                    Chunk Names
bundle.js  263 KiB       0  [emitted]  [big]  main
Entrypoint main [big] = bundle.js
[128] ./src/index.js 62 bytes {0} [built]
[129] (webpack)/buildin/module.js 497 bytes {0} [built]
[130] ./node_modules/moment/locale sync ^\.\/.*$ 3 KiB {0} [optional] [built]
    + 128 hidden modules

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  bundle.js (263 KiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (263 KiB)
      bundle.js


WARNING in webpack performance recommendations: 
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/

E ainda funciona.

Espere um segundo - isso é um aviso, não um erro. Ainda produz um pacote?

Sim. Ainda assim - irritante, errado e torna a saída da compilação cheia de vestígios de baixa qualidade.

Também estou vendo isso, mas apenas em compilações de produção por meio de nosso CI.

@jontybrook Eu estava vendo o mesmo comportamento, mas depois de destruir a pasta node_modules, consegui reproduzir isso localmente.

O código com __dirname que estava corrigindo um problema para o react-native teve que ser revertido para que vocês (usuários do webpack) possam ver uma saída melhor do console.

Fixado em 2.25.1

Isso não tem nada a ver com uma melhor saída de console ... mas muito menos do que compilações de quebra de código testadas idealmente para MUITAS pessoas!

Fico feliz em saber que foi consertado e publicado minutos atrás - passamos as últimas horas investigando nosso lado tentando encontrar a causa

Isso não tem nada a ver com uma melhor saída de console ... mas muito menos do que compilações de quebra de código testadas idealmente para MUITAS pessoas!

Exatamente ! Advertir hoje é um erro potencial amanhã.

Foi muito pior do que um aviso ... se você por acaso estivesse executando o fuso horário de momento que puxa dinamicamente a versão mais recente do momento, isso causava uma quebra completa do código!

Espere um segundo - isso é um aviso, não um erro. Ainda produz um pacote?

Se apenas produzir um pacote fosse o único resultado desejado ...

O código com __dirname que estava corrigindo um problema para o react-native teve que ser revertido para que vocês (usuários do webpack) possam ver uma saída melhor do console.

Fixado em 2.25.1

Por que o sarcasmo ?! A produção limpa é importante. Na minha configuração, coloquei estatísticas e métricas que são importantes para mim e inundá-las com coisas desnecessárias torna cansativa de ler e no mínimo retarda meu trabalho. Então vem o fato de que um aviso é sempre algo que não deve ser ignorado a longo prazo. Por último, mas na verdade primeiro - acaba sendo realmente problemático para algumas configurações, conforme relatado por

Fico feliz em ver isso corrigido. Continuará com 2.24.0 até uma versão posterior ou pode mantê-lo ... demorou muito para descobrir por que nosso aplicativo da web foi quebrado esta manhã após uma implantação.

Usuários de "vocês" webpack ... também conhecidos como uma grande parte dos desenvolvedores de aplicativos web. No momento, não temos nenhum dado extra vindo de nosso processo de webpack, então não quero olhar para uma saída de console melhor, só quero que funcione.

O código com __dirname que estava corrigindo um problema para o react-native teve que ser revertido para que vocês (usuários do webpack) possam ver uma saída melhor do console.

Fixado em 2.25.1

Sarcasmo à parte, a v2.25.1 na verdade não corrige nada (o aviso Module not found ainda está lá). Normalmente, eu evito ser crítico com os colaboradores de código aberto que estão dedicando seu tempo, mas por favor, não tenha uma atitude em relação aos usuários que estão simplesmente relatando problemas. E sim, os avisos existem por um motivo. Ignorá-los obscurece todos os tipos de outras informações e geralmente leva a algo quebrado no caminho.

Este problema não deve ser resolvido ... é uma mudança importante para usuários de fuso horário que usam webpack, não apenas um problema de mostrar um aviso (e afetando um número enorme de pessoas)

mesmo problema
não consertar 2.25.0
não consertar 2.25.1
não consertar 2.25.2

Eu quero que você reverta para a versão original.

Ambiente de verificação de operação
https://github.com/standard-software/partsjs/tree/v5.0.0
package.json

Cara isso não está consertado! Não podemos fechar os defeitos até que sejam resolvidos, especialmente quando eles quebram compilações existentes, como o Webpack ?! @ichernev por favor

Olá, BUMP !, isso também está quebrando minha compilação, não foi consertado.

Acabei de atualizar moment com npm i moment e resolveu

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

Questões relacionadas

benhathaway picture benhathaway  ·  3Comentários

nikocraft picture nikocraft  ·  3Comentários

vbullinger picture vbullinger  ·  3Comentários

Delgan picture Delgan  ·  3Comentários

BCup picture BCup  ·  3Comentários