Moment: Caminho './locale' não encontrado em moment / src / lib / locale / locales.js

Criado em 19 mar. 2018  ·  54Comentários  ·  Fonte: moment/moment

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'D:\project-fed\ecloud\client-web\node_modules\moment\src\lib\locale'

Eu descobri que há algo errado com a função abaixo

function loadLocale(name) {
    var oldLocale = null;
    // TODO: Find a better way to register and load all the locales in Node
    if (!locales[name] && (typeof module !== 'undefined') &&
            module && module.exports) {
        try {
            oldLocale = globalLocale._abbr;
            var aliasedRequire = require;
            aliasedRequire('./locale/' + name);
            getSetGlobalLocale(oldLocale);
        } catch (e) {}
    }
    return locales[name];
}

aliasedRequire('./locale/' + name); , deveria ser ../locale/ ?

Troubleshooting

Comentários muito úteis

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

Todos 54 comentários

Vejo o mesmo aviso quando uso o webpack para agrupar o momento. Alguma ideia de quando esse erro foi introduzido?

Tenho o mesmo aviso usando angular-cli alguma solução?

Tendo o mesmo problema. Você conhece alguma solução alternativa / correção?

Mesmo problema - parece um problema de caminho com './locale' vs '../locale'. Alguém está investigando esse bug?

https://github.com/moment/moment/issues/2979

Parece que tem sido assim há anos, não faço ideia por que eles não vão consertar. Eu também encontrei isso ao tentar usar jsnext: main no webpack em vez do main.

Minha solução para continuar usando

... resolve: { alias: { moment$: path.resolve(root_dir, "node_modules/moment/moment.js") } }

O acima não funcionou para mim, mas seguir este tutorial ajudou a corrigir isso para mim.

https://alligator.io/angular/custom-webpack-config/

Existe algo novo sobre isso? Estou usando o Laravel Mix ... mesma coisa aqui ...

eu faço

import * as moment from 'moment';

e isso funciona.

eu faço

import * as moment from 'moment';

e isso funciona.

dentro do webpack? Estou pensando em como fazer isso com o Laravel Mix ..

@marcelogarbin oh, desculpe, não

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

A solução de @yaasinhamidi funcionou

eu faço

import * as moment from 'moment';

e isso funciona.

Onde esta linha deve ser colocada?

Enfrentando o mesmo problema pela primeira vez após atualizar para 2.25.0. Também estou usando o Laravel Mix (nota, nunca tive esse problema em nenhuma versão anterior).

minha solução alternativa é voltar para 2.24.0

Estou enfrentando o mesmo problema após a atualização

Até que seja corrigido, reverter para a v2.24.0 resolve esse problema.

Reverter para a v.2.24.0 funcionou para mim também.

para qualquer outra pessoa com esse problema, eu também tive que forçar as versões de momentos que outros pacotes em minha pasta node_modules/ puxaram como dependências para a v2.24.0 também

usando yarn, adicionando esta linha ao package.json ordenou as coisas para mim

"resolutions": {
        "**/moment": "2.24.0"
    },

Ola pessoal!
Enfrentei o mesmo problema nas últimas horas e, finalmente, resolvi mudando a versão do momento.

Nos comentários acima, vi a solução final.

Razão:
_moment lançar a nova versão 17 horas atrás de 2.24.0 a 2.25.0_

Solução:
Etapa 1: alterar as versões

  • "momento": "2.24.0",
  • "fuso horário do momento": "^ 0.5,28",

Etapa 2: se você estiver usando yarn, adicione resoluções em seu arquivo package.json como esta
"dependências" {
"momento": "2.24.0",
"fuso horário do momento": "^ 0,5,28"
},
"resoluções": {
"momento": "2.24.0"
},

Obrigada.

Mesmo se você tiver, siga o bloco. O pacote-lock.json criará uma nova versão, ou seja, 2.5.1. Portanto, altere para "momento": "2.24.0" até que o problema seja resolvido.
"dependências" {
"momento": "^ 2.24.0", ----------------> "momento": "2.24.0"
},

eu reverti para 2.24.0, mas ainda tendo o mesmo aviso ao usar o nó

É estranho que comecei a receber esse erro hoje depois de reinstalar as dependências, a correção sugerida de ignorar os plug-ins de locale com o webpack não funcionou. O que funcionou foi deixar a versão fixada em 2.24.0, conforme sugerido por @ sachins81 . Eu me pergunto se algo relevante mudou nos commits recentes? @ichernev

eu reverti para 2.24.0, mas ainda tendo o mesmo aviso ao usar o nó
@nitindevelopermca Certifique-se de que seja "2.24.0" e não "^ 2.24.0". (Funcionou para mim depois de mudá-lo)

Acabei de reverter para "^ 2.18.1" e tudo parece estar funcionando bem

O mesmo problema usando o react, o momento não é uma dependência do meu projeto, então não posso revertê-lo

O mesmo problema usando o react, o momento não é uma dependência do meu projeto, então não posso revertê-lo

Você pode executar estes comandos por enquanto.

npm install [email protected] --save

Eu tive o mesmo caso e quando eu pesquisei de alguma forma o antd estava usando o moment como uma dependência e espero que o problema do momento seja resolvido na próxima versão enquanto eu vi que eles lançaram uma nova versão, então tente primeiro a versão mais recente, que é

Obrigada!

Isso me ajudou a mudar para a versão fixa 2.24.0 dentro de dependencies e dentro de resolutions . Eu uso o pacote dentro do meu código e como uma dependência de react e antd .

Se você tiver vários espaços de trabalho, não se esqueça de alterar todos os arquivos package.json . Eu esqueci isso no começo.

o mesmo problema aconteceu na v2.25.1, então tento adicioná-los no package.json (eu uso o yarn):

"dependencies" {
  "moment": "2.24.0"
},
"resolutions": {
  "moment": "2.24.0"
},

Mesmo erro aqui. Eu heve

"dependencies": {
    "moment": "^2.25.1"
}

e quando executo npm run production recebo:
shell script WARNING in ./node_modules/moment/src/lib/locale/locales.js Module not found: Error: Can't resolve './locale' in '/var/www/apf.local/html/node_modules/moment/src/lib/locale' @ ./node_modules/moment/src/lib/locale/locales.js @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js

Com a versão ~2.24.0 , tudo funcionando como esperado.

Ola pessoal!
Enfrentei o mesmo problema nas últimas horas e, finalmente, resolvi mudando a versão do momento.

Nos comentários acima, vi a solução final.

Razão:
_moment lançar a nova versão 17 horas atrás de 2.24.0 a 2.25.0_

Solução:
Etapa 1: alterar as versões

  • "momento": "2.24.0",
  • "fuso horário do momento": "^ 0.5,28",

Etapa 2: se você estiver usando yarn, adicione resoluções em seu arquivo package.json como esta
"dependências" {
"momento": "2.24.0",
"fuso horário do momento": "^ 0,5,28"
},
"resoluções": {
"momento": "2.24.0"
},

Obrigada.

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

excelente! funciona!

Obrigado .
Seu trabalho bem. basta importar a linha abaixo:
importar * como momento de 'momento / momento';

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

Solução fantástica :) resolveu uma grande dor de cabeça com isso

Fantastic fix :) solved a major headache with this

Solução medíocre, se alguém não tiver antd como dependência direta.

Eu encontrei o mesmo problema, mas não tenho momentos nas dependências. Mas o Antd faz.
E o npm não funciona com resoluções.

A única solução para mim agora é rebaixar o antd.
Não consigo ver uma solução adequada que não seja incluir um pacote extra para fazer as coisas funcionarem.

Tenho o mesmo problema em meu aplicativo React que, por algum motivo, começou a aparecer do nada. Tenho usado moment neste aplicativo desde sempre e nunca tinha percebido esse erro. Na verdade, tornou-se um erro no meu caso, pois meu aplicativo React não compilava por causa desse problema.

Em seguida, tentei import moment from 'moment/moment'; que corrigiu o problema de compilação, mas ainda recebo o seguinte aviso sempre que executo o aplicativo.

./node_modules/moment/src/lib/locale/locales.js
Module not found: Can't resolve './locale' in 'C:\Users\myname\source\repos\myapp\node_modules\moment\src\lib\locale'

A única graça salvadora é que meu aplicativo React, pelo menos, compila e funciona bem.

Também tenho o mesmo problema com criar-reagir-app (modelo de texto digitado). Tentei import moment from 'moment'; Então recebi o erro:
./node_modules/moment/src/lib/locale/locales.js Module not found: Can't resolve './locale' in 'D:\MyName\Learning\ProjectName\node_modules\moment\src\lib\locale'

@devayarhlaine Eu

Foi um problema de nova versão momentânea.

Idem acima:
Também tenho o mesmo problema com "Não é possível encontrar o módulo 'momento'".
Usar a solução com "importar * como momento de 'momento / momento' resolveu um problema.
Mas então recebi o erro:
./node_modules/moment/src/lib/locale/locales.js Módulo não encontrado: Não é possível resolver './locale' em 'D: \ MyName \ Learning \ ProjectName \ node_modulesmoment \ src \ lib \ locale'
e o downgrade não é uma solução (na minha opinião :-).

Recebi este erro ao atualizar do angular 8 para o angular 9.1.
A atualização para o momento 2.25.1 resolveu o problema # 5486 ("TS2307: Não é possível localizar o módulo 'momento'."), Mas o erro de localidade permaneceu.

Para aqueles que usam o comando "yarn create react-app", a correção é editar node_modules / react-scripts / config / webpack.config.js para adicionar o alias como abaixo.

moment$: 'moment/moment.js'

Insira a linha acima no bloco de alias na linha número 311.

alias: {
  // Support React Native Web
  // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
  'react-native': 'react-native-web',
  // Allows for better profiling with ReactDevTools
  ...(isEnvProductionProfile && {          'react-dom$': 'react-dom/profiling',
  'scheduler/tracing': 'scheduler/tracing-profiling',        }),
  ...(modules.webpackAliases || {}),        
  moment$: 'moment/moment.js'
},

Outra maneira de resolver isso é substituir moment.js por Day.js. Siga as instruções neste url para usar react-app-rewired >> https://ant.design/docs/react/use-with-create-react-app. Modifique o package.json de acordo com a instrução. Em seguida, crie um config-overrides.js na pasta raiz como abaixo. Isso tem a vantagem de reduzir o js de 231,11kb para 11,11kb de acordo com este https://github.com/ant-design/antd-dayjs-webpack-plugin.

const { override, addWebpackPlugin } = require('customize-cra');    
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin');

module.exports = override(
        addWebpackPlugin(new AntdDayjsWebpackPlugin())
);

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

Solução fantástica !!!

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

Funcionou para mim

Parece que a raiz do problema foi causada pelo campo "module" em package.json (https://github.com/moment/moment/commit/9ce89e7fea881b39be23b8c0646f7ef7817985d9)

aqui está o PR para corrigi-lo https://github.com/moment/moment/pull/5503

Sim, remover "module": "./src/moment.js", de package.json fez o aviso desaparecer para mim. BTW, o meu é um aplicativo React - create-react-app e estou usando "moment": "^2.25.1" . Embora eu estivesse usando a versão mais recente, ainda recebia esse erro, mas atualizar o package.json parece ter resolvido o problema. Obrigado @ApacheEx

Corrigi este erro, pelo menos para mim.

Eu fui para node_modules / moment / src / lib / locale /
Modificado o arquivo locales.js, ctrl + fe search './locale'+name linha.
Altere para './'+name .
Não sei porque está apontando para a mesma pasta e '/.locale' + nome, é por isso que o erro diz não foi possível resolver ./locale

Para ser sincero, copiei a linha original e comentei logo acima, se no futuro aparecer um erro.

Se isso ajudar, polegar para cima. Este tipo de erros são os piores ...

Tendo o mesmo problema, revertido para 2.24 até que uma correção esteja disponível. Não consigo editar os arquivos do módulo, pois estou construindo em um servidor automático, portanto, aguardando um lançamento oficial.

Tenho o mesmo problema com as versões 2.24 e 2.25.1
WARNING in ./node_modules/moment/src/lib/locale/locales.js

Quando abro o console do navegador, vejo este erro:
TypeError: Cannot read property 'defineLocale' of undefined at locales.min.js:1

Estamos tendo o mesmo problema com o momento 2.22

Apenas importe como abaixo e pronto:

importar momento de 'momento / momento';

Onde esta linha deve ser colocada?

Apenas importe como abaixo e pronto:
importar momento de 'momento / momento';

Onde esta linha deve ser colocada?

No arquivo que você deseja usar momentjs no ecmascript como abaixo:

import moment from 'moment/moment';
(() => {
const now = moment(moment.now());
console.log(now);
})

2.25.3 deve corrigir esse problema.
Abra outro problema se ainda tiver desafios.
Ou você pode experimentar o Stack Overflow para perguntas mais individuais.

Este alias com a configuração do WebPack corrige um problema para mim:

resolve: {
  extensions: ['.js', '.ts'],
  alias: {
    './locale': 'moment/locale'
  }
}

Se você estiver usando o fuso horário:
https://github.com/moment/moment-timezone/issues/837

eu conserto isso com isso:

import moment from 'moment'; import 'moment/locale/pt-br';

ele funciona, e o local é definido como 'pt-br', e todos os outros idiomas também funcionam.

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

Questões relacionadas

slavafomin picture slavafomin  ·  3Comentários

RobinvanderVliet picture RobinvanderVliet  ·  3Comentários

vbullinger picture vbullinger  ·  3Comentários

paulyoung picture paulyoung  ·  3Comentários

IbraheemAlSaady picture IbraheemAlSaady  ·  3Comentários