Moment: Obtendo erro de webpack após atualização para 2.19.0

Criado em 10 out. 2017  ·  23Comentários  ·  Fonte: moment/moment

Não sei se está relacionado ao #4216 porque estou usando Angular 4.4.4 e esse é um problema de React , então estou postando isso como um problema separado.

Recebi o seguinte erro após a atualização:

__WEBPACK_IMPORTED_MODULE_2_moment__ is not a function

Estou usando os seguintes pacotes moment

"moment": "2.19.0",
"@types/moment": "2.13.0",   

O código onde recebo o erro é bem simples:

import * as moment from 'moment';
...

  if (moment().year() !== this.mainData.activeYear)

...

Comentários muito úteis

Mesmo aqui. Não usando Angular ou React. Este é o meu erro de webpack:

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/data/jenkins/workspace/project/node_modules/moment/src/lib/locale'
./~/moment/src/lib/locale/locales.js 65:16-60
./~/moment/src/lib/locale/locale.js
./~/moment/src/moment.js
./script.js

Todos 23 comentários

+1 - Mesmo problema com Angular 4

Mesmo aqui. Não usando Angular ou React. Este é o meu erro de webpack:

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/data/jenkins/workspace/project/node_modules/moment/src/lib/locale'
./~/moment/src/lib/locale/locales.js 65:16-60
./~/moment/src/lib/locale/locale.js
./~/moment/src/moment.js
./script.js

Mesmo problema com vuejs e webpack.

O mesmo aqui com o webpack, embora o problema seja acionado pelo fuso horário do momento. Alteramos a dependência de "moment": "^2.18.1" para "moment": "~2.18.1"

mesmo problema ao atualizar momentaneamente para a versão 2.19.0
WARNING in ./~/[email protected]@moment/src/lib/locale/locales.js Module not found: Error: Can't resolve './locale' in '/Users/XXX/code/gitlab/web-editor/node_modules/[email protected]@moment/src/lib/locale' @ ./~/[email protected]@moment/src/lib/locale/locales.js 65:16-60 @ ./~/[email protected]@moment/src/lib/locale/locale.js @ ./~/[email protected]@moment/src/moment.js @ ./~/[email protected]@antd/lib/calendar/index.js @ ./~/[email protected]@antd/lib/index.js @ dll lib

Mesmo problema aqui com 2.19.0

Mesmo problema nesta versão 2.19.0

Esta versão ( 2.19.0 deve ser corrigida )
para o 'momento' ahahah, instale o 2.18.1
"momento": "~2.18.1"

Mesmo problema aqui 😢 Faremos o downgrade para 2.18 até que isso seja resolvido.

Mesmo problema aqui...

reagir erro webpack

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'blahblahblah/node_modules/moment/src/lib/locale'
 @ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/client/components/ArticlesGrid/index.js
 @ ./src/client/containers/StuffPage/index.js
 @ ./src/client/routes.jsx
 @ ./src/client/index.js
 @ multi (webpack)-dev-server/client?http://0.0.0.0:8050 webpack/hot/dev-server babel-polyfill ./src/client/index.js

@mymtw - como comunidade, não permitimos palavrões nos formulários, então seu comentário foi atualizado. Por favor, abstenha-se no futuro.

Peguei este depois de atualizar para 2.19 ...

node_modules/webpack/lib/IgnorePlugin.js:20
                    (!contextRegExp || contextRegExp.test(result.context))) {
                                                     ^

TypeError: contextRegExp.test is not a function

E usando o plugin ignore para pular localidades no meu arquivo de configuração do webpack:

new webpack.IgnorePlugin(/^\.\/locale$/, [/moment$/])

Bloquear a versão do momento em package.json ajudará:

"moment": "2.18.0"

No entanto, se a versão mais recente do momento (2.19.0) estiver sendo puxada por suas dependências, o acima não funcionará (execute find ./node_modules/*/node_modules -iname moment para verificar outras versões do momento em seu aplicativo)

Em vez disso, você pode usar externos do webpack:

  • Adicione um momento à configuração do seu webpack externo:
+            externals: {
+                moment: 'moment',
+            },
  • Use o arquivo moment.js do CDN - coloque isso em seu arquivo index.html (ou index.ejs):
    <script src="https://momentjs.com/downloads/moment.min.js"></script>

Rebaixado para ~2.18.0 que contorna isso por enquanto.

Aqui está uma etapa de reprodução que funciona para mim. Estou assumindo que você tem create-react-app instalado globalmente:

> create-react-app my-app
> cd my-app
> # Prove the app it working correctly
> npm run start 
> npm install moment

Atualize src/app.js com algo como:

 import '.App.css';

+ import moment from 'moment'

class App extends Component {
 </p>
+<p>
+ Today is {moment().format()}
+</p>
 </div>

Então

> npm run start 

Espere o site carregar.

Real, falha com um erro: não é possível resolver o erro './locale'.

Contexto extra, funciona depois de fazer

> npm install [email protected] 

Isto é interessante. Acabei de atualizar o momento no meu próprio código em que trabalho para o meu trabalho e iniciei o webpack. Até onde sei, tenho a última de todas as dependências do webpack (existem várias, e verifiquei apenas algumas) e o momento 2.19.0, e está tudo bem.

Vou tentar este caminho create-react-app a seguir.

Esta não foi uma manhã muito feliz com esse erro!

Ditto sobre este erro.

npm install --save [email protected]

Isso corrige o problema por enquanto. 2.19.0 estava me dando o mesmo erro cerca de 2 horas atrás.
Rebaixado para a versão 2.18.1 e funcionou bem.

Também podemos corroborar esse cenário.

2.19.0 quebrou nossa compilação de produção :(. Reverter para 2.18.1 parece estar funcionando bem.

Fechando como uma duplicata de #4216 - faixa lá.

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