<p>momento não tem membro padrão</p>

Criado em 9 jan. 2018  ·  4Comentários  ·  Fonte: moment/moment

Descrição do problema e etapas para reproduzir:
Tentando implementar a localidade da instância no projeto typescript
https://momentjs.com/docs/#/i18n/instance -locale /
mas quando eu import moment from 'moment' obtenho um erro:
moment has no default export

propósito:
Eu preciso de formulários personalizados (encurtando, como 'sec' em vez de 'segundos') de strings humanizadas em algumas partes do aplicativo, então eu gostaria de usar duas localidades em uma visualização.

Ambiente:
projeto datilografado

Outras informações que podem ser úteis:
TypeScript, Angular4

Se você estiver relatando um problema, execute o seguinte código no ambiente que está usando 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)
Tue Jan 09 2018 15:46:46 GMT+0100 (CET)
VM12667:2 09/01/2018, 15:46:46
VM12667:3 -60
VM12667:4 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
VM12667:5 Uncaught ReferenceError: moment is not defined
    at <anonymous>:5:13



md5-1f8dcc13f1f8244065e29a6dcf5a9efa



import * as moment from 'moment';
console.log('version', moment.version);



md5-1f8dcc13f1f8244065e29a6dcf5a9efa



version 2.20.1

Eu gostaria de evitar a solução import * as moment from 'moment'; , uma vez que bloqueia três tremores no empacotamento

Muito Obrigado! :)

Comentários muito úteis

RTFM 😂

Note: If you have trouble importing moment, try adding 
"allowSyntheticDefaultImports": true in compilerOptions 
in your tsconfig.json file and then use the syntax

https://momentjs.com/docs/#/use -it / typescript /

Todos 4 comentários

RTFM 😂

Note: If you have trouble importing moment, try adding 
"allowSyntheticDefaultImports": true in compilerOptions 
in your tsconfig.json file and then use the syntax

https://momentjs.com/docs/#/use -it / typescript /

Existe uma chance de que isso seja resolvido de uma forma em que allowSyntheticDefaultImport não seja mais necessário? O problema de exigir é que exige que todos que usam o momento também tenham essa configuração ativada.

Ao não exigir essa configuração, você permite que moment seja facilmente usado em projetos que têm sua própria preferência por allowSyntheticDefaultImport , mas agora essa configuração é efetivamente imposta a todos.

Só estou dizendo aqui que este é um problema realmente desagradável. Uma vez que o momento optou por não respeitar as especificações oficiais, isso significa que algumas bibliotecas puxam via import * as moment from "moment" enquanto outras bibliotecas rodam via import defaultMoment from "moment" . Portanto, quando meu projeto tenta carregar os dois, simplesmente não consigo obter as configurações corretas para obter o rollup para compilá-lo corretamente. Eu tentei quase todas as permutações e combinações de allowSyntheticDefaultImports : true , esModuleInterop : true , moduleResolution : "node" e skipLibCheck : true e não consigo obter uma permutação que funcione corretamente. Uma solução permitirá que uma biblioteca com um formato de importação funcione, mas falha no outro.

Existe uma razão para que as especificações existam, ans é para criar consistência. Não há como aquele momento ter uma variante moment-es ou algo que possa ser importado corretamente, de forma que as pessoas que desejam seguir as especificações possam apenas seguir as especificações, permitindo que o conjunto de ferramentas JS funcione como esperado, ao invés de todos os hacks?

+1

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