Moment: Moment funktioniert nicht mit Scherz

Erstellt am 16. Juli 2019  ·  9Kommentare  ·  Quelle: moment/moment

Beschreibe den Fehler
Wenn import moment from 'moment' in eine Entwicklungseinstellung importiert wird, kann der Moment effektiv arbeiten und macht alles, was ich will. Beim Ausführen von Scherztests, die über den Code ausgeführt werden, der moment () aufruft, wird jedoch der folgende Fehler angezeigt:
"TypeError: moment_1.default ist keine Funktion"
Seltsamerweise ermöglicht das Importieren auf diese Weise: import * as moment from 'moment' Funktionen im Test, aber nicht in der Produktion. Ich habe alle Probleme von Jest durchgesehen und dies wurde als Problem gemeldet. Das Jest-Team ist jedoch zuversichtlich, dass das Problem auf der aktuellen Seite liegt.

Reproduzieren
Schritte zum Reproduzieren des Verhaltens:

  1. Machen Sie eine einfache Funktion in einer Reaktions-App, die moment () aufruft.
  2. Fügen Sie einen Scherztest hinzu, der diesen Pfad durchquert.
  3. Führen Sie den Test aus.
  4. Siehe Fehler

Erwartetes Verhalten
Der Moment sollte sowohl im Test als auch in der Produktion auf dieselbe Weise abrufbar sein.

Desktop (bitte vervollständigen Sie die folgenden Informationen):

  • Betriebssystem: macOS Mojave
  • Testen: Jest -v 24.8.0

Momentenspezifische Umgebung
Moment -v 2.24.0

  • Andere verwendete Bibliotheken: TypeScript

Führen Sie den folgenden Code in Ihrer Umgebung aus und fügen Sie die Ausgabe hinzu:
Konsolenausgabe, wenn der Moment so importiert wird, wie es die Entwicklung erwartet, dh Moment von 'Moment' importieren

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 10:58:16 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 10:58:16 AM
    console.log src/resources/timestamping.tsx:6
      240
TypeError: Cannot read property 'version' of undefined.

Konsolenausgabe, wenn der Moment so importiert wird, wie er im Test funktioniert, dh * als Moment aus 'Moment' importieren.

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 11:02:46 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 11:02:46 AM
    console.log src/resources/timestamping.tsx:6
      240
    console.log src/resources/timestamping.tsx:8
      2.24.0
Documentation Help Wanted

Hilfreichster Kommentar

const moment = require("moment").default || require("moment") ist das, was ich mir ausgedacht habe, aber es erlaubt nur die Verwendung von moment als Funktion.
// bearbeiten

import * as mom from "moment";
const moment = require("moment").default || require("moment");

Behebt das Winkel- / Scherzproblem. Aber es ist immer noch ein Hack.

Alle 9 Kommentare

const moment = require("moment").default || require("moment") ist das, was ich mir ausgedacht habe, aber es erlaubt nur die Verwendung von moment als Funktion.
// bearbeiten

import * as mom from "moment";
const moment = require("moment").default || require("moment");

Behebt das Winkel- / Scherzproblem. Aber es ist immer noch ein Hack.

blem. Aber es ist immer noch ein Hack.

Vielen Dank, Sir, das hat geholfen.

Gibt es etwas, was die Seite von Moment.j hier tun kann?

Ich hatte dieses Problem, als ich ts-jest für die Arbeit mit Typoskript und Scherz verwendete. Ich habe stattdessen babel für die Typoskript-Unterstützung mit Scherz verwendet und sehe mich dem nicht mehr gegenüber. Vielleicht macht die ts-jest Bibliothek etwas unter der Haube

nach etwas mehr suche fand hier die lösung
https://github.com/aurelia/skeleton-navigation/issues/606#issuecomment -397051406

müssen "esModuleInterop": true unter compilerOptions in tsconfig.json übergeben

@DhrubajitPC froh, dass Sie die Lösung gefunden haben.
Können Sie das zu unseren Dokumenten hinzufügen?
https://momentjs.com/docs/#/use -it / typescript /

Klar ... gib mir etwas Zeit :)

hmmm ... es scheint schon Teil der FAQ zu sein
https://github.com/moment/moment/blob/develop/FAQ.md

Es scheint, dass ich diesen Fehler nur bekomme, wenn ich esModuleInterop auf true setze ...
@KonradLinkowski - der Hack hat aber geholfen :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen