Moment: Módulo não encontrado: Erro: Não é possível resolver '../moment' com Webpack e TypeScript

Criado em 11 jan. 2019  ·  9Comentários  ·  Fonte: moment/moment

Descreva o bug

Se tento compilar meu aplicativo TypeScript com webpack, obtenho um erro para cada localidade que '../moment' não pode ser resolvido.

Este erro se repete para todas as outras localidades:

ERROR in ./node_modules/moment/locale/km.js
Module not found: Error: Can't resolve '../moment' in 'C:\PROGS\dev\var\private\moment-test\node_modules\moment\locale'
 @ ./node_modules/moment/locale/km.js 5:50-70
 @ ./node_modules/moment/locale sync ^\.\/.*$
 @ ./node_modules/moment/moment.js
 @ ./src/app.ts

Reproduzir

src / app.ts

import * as moment from "moment";
console.log(moment().format("YYYY"));

package.json

{
    "private": true,
    "dependencies": {
        "moment": "2.23.0"
    },
    "devDependencies": {
        "awesome-typescript-loader": "5.2.1",
        "typescript": "3.2.2",
        "webpack": "4.28.3",
        "webpack-cli": "3.2.1"
    }
}

tsconfig.json

{ "include": [ "./src/" ] }

webpack.config.js

module.exports = {
    entry: "./src/app.ts",
    output: { filename: "bundle.js" },
    resolve: { extensions: [".ts"] },
    module: { rules: [ { test: /\.ts$/, use: { loader: "awesome-typescript-loader" } } ] }
}

Comportamento esperado

yarn run webpack -p deve funcionar sem erros.

Ambiente específico do momento

  • Windows 10
  • Nó 10.15.0
  • momento 2.23.0
  • TypeScript 3.2.2
  • Webpack 4.28.3
  • Fuso horário: CET (UTC + 1)

Execute o seguinte código em seu ambiente e inclua a saída:

console.log((new Date()).toString())
console.log((new Date()).toLocaleString())
console.log((new Date()).getTimezoneOffset())
console.log(navigator.userAgent)
console.log(moment.version)

Este código falha com os mesmos erros!

Comentários muito úteis

Eu estava enfrentando o mesmo problema, aqui estava o problema-

  • Eu instalei usando o comando personalizado npm i --save react-moment , que acabou de ser adicionado no arquivo package.json mas lib não estava lá em node_modules, então para fazer isso eu executo
  • npm install --save moment react-moment
  • e agora está funcionando conforme o esperado.

Todos 9 comentários

Obrigado por abrir este pedido.
Esta é uma ótima pergunta para Stack Overflow .

Isso é um bug, não é? Stack Overflow é bom para questionar, mas ninguém vai consertar bugs aí.

Interpreto sua resposta como significando que você não oferece suporte para WebPack com TypeScript. Muito ruim!

Existem vários tutoriais na Internet sobre como usar o Moment com Webpack e TypeScript. Parece que muitos outros os usam juntos muito bem. Se mais pessoas tiverem esse problema e houver conhecimento da comunidade suficiente para corrigi-lo, podemos tentar fazer isso.

A propósito, eu tive o mesmo problema - parece ser causado por locais de momento, com os quais eu não me importava. Eu encontrei uma solução neste artigo online , que foi bom o suficiente no meu caso, para ignorar o plug-in locales:

plugins: [novo webpack.IgnorePlugin (/^.\/ locale $ /, / momento $ /)]

Este parece um cenário de uso bastante comum, então eu recomendo o link para a página acima da seção TypeScript dos documentos .

@ authguidance-examples PRs são bem-vindos em https://github.com/moment/momentjs.com !

Eu estava enfrentando o mesmo problema, aqui estava o problema-

  • Eu instalei usando o comando personalizado npm i --save react-moment , que acabou de ser adicionado no arquivo package.json mas lib não estava lá em node_modules, então para fazer isso eu executo
  • npm install --save moment react-moment
  • e agora está funcionando conforme o esperado.

alguém sabe por que sempre mostra como "alguns segundos atrás"? qualquer que seja a data

adicionei o momento em reactjs: import * as moment from "moment"; e na injeção de dependência adicionado: "momento": "2.23.0", mas obtendo o

erro indefinido ... em reactjs,
Por favor, ajude ...

Por que esta filial não está fechada? Último comentário em 2 de dezembro de 2019. @marwahaha

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