Fehler: *.default ist kein Konstruktor

Lesezeit: 3 Minuten

Benutzer-Avatar
Christoph Mortensen

Beim Testen von JavaScript-Code, der aus einer Typoskript-Datei transpiliert wurde, erhalte ich die folgende Fehlermeldung.

Hier ist der Fehler:

Error: _mapAction2.default is not a constructor

Hier ist die Codezeile, die den Fehler verursacht hat:

var mapAction = new MapAction(MapActionType.POLYGONDRAGGED, []);

Hier ist die Original-Typoskript-Datei map-action.ts:

import { IMapAction} from './imap-action';
import { MapActionType } from './map-action-type.enum';
import {LatLngLiteral} from 'angular2-google-maps/core';

export class MapAction implements IMapAction{
    type: MapActionType;
    paths: Array<LatLngLiteral>;

    constructor(mapActionType: MapActionType, paths: Array<LatLngLiteral>){
        this.type = mapActionType;
        this.paths = paths;
    }

    public getType(): MapActionType{
        return this.type;
    }

    public getPaths(): Array<LatLngLiteral>
    {
        return this.paths;
    }

}

Hier ist die transpilierte .js-Datei map-action.js:

"use strict";
class MapAction {
    constructor(mapActionType, paths) {
        this.type = mapActionType;
        this.paths = paths;
    }
    getType() {
        return this.type;
    }
    getPaths() {
        return this.paths;
    }
}
exports.MapAction = MapAction;
//# sourceMappingURL=map-action.js.map

Benutzer-Avatar
euvl

Sie müssen eine exportieren Ursprünglich Wert, der wie folgt aussehen wird:

export default class MapAction implements IMapAction {...

Und importieren Sie es als:

import MapAction from './map_action_file';

Alternativ, wenn Sie exportieren möchten mehrere Dinge aus dem Modul können Sie so etwas tun:

export class MapAction ...
export class MapSomethng ...

Und importieren Sie es wie folgt:

import { MapAction, MapSomething } from './map_action_file';

  • oder alternativ, import {MapAction} from './map_action_file' ohne Standard zu exportieren

    – Val Berthe

    7. März 2017 um 15:53 ​​Uhr

  • Danke, ja, ich habe alle map_action-bezogenen Dateien zu einer zusammengeführt, und dann hat @Ksygos Kommentar den Fehler behoben!

    – Christopher Mortensen

    7. März 2017 um 16:53 Uhr

  • Das Fehlen von {} hat mich so erwischt: import { Frak } from './Frak'; behoben. Danke.

    – RyanNerd

    13. November 2017 um 22:48 Uhr

Eine andere Lösung wäre das Hinzufügen "esModuleInterop": true, hinein tsconfig.json.

esModuleInterop ermöglicht Standardimporte aus Modulen ohne Standardexport.

  • Bei mir war dies der Fall, als ich die Twitter-Lite-SDK-Bibliothek verwendete, sodass andere Benutzer sie möglicherweise hilfreich finden

    – Bartłomiej Sobieszek

    25. Mai 2021 um 4:47 Uhr

  • Ich habe es schon wahr, aber das Problem ist immer noch da. Irgendeine Idee?

    – Antoni

    11. Januar um 14:01 Uhr

Überprüfen Sie, ob Ihr Import korrekt ist. Sie könnten zum Beispiel {} verpassen.

import LatLngLiteral from '';

zu

import { LatLngLiteral } from '';

  • Es gibt einen großen Unterschied zwischen dem Import mit und ohne Klammern. Wenn Sie diesen Unterschied nicht kennen, müssen Sie 5 Minuten aufwenden, um Standardexporte und benannte Exporte in JS zu verstehen

    – TetraDev

    26. Juli um 16:02 Uhr

Ich hatte dieses Problem, als ich Node JS und MongoDB verwendete. Das Problem war, wie ich das Benutzermodell importiert habe.

So hat es bei mir funktioniert

import { User } from '../models/User'

Wenn Sie die Antworten hier ausprobiert haben und sie nicht geholfen haben, überprüfen Sie den Stack-Trace Ihres Fehlers sorgfältig – ich habe die zirkuläre Abhängigkeit in meinem Code gefunden (aber der Fehler war derselbe wie in dieser Frage, sodass die Ursache absolut nicht offensichtlich war).

Benutzer-Avatar
Arschbot

Da Klassen in Javascript sind syntaktischer Zucker, dachte ich, ich würde versuchen, dieses Problem ohne sie zu lösen. Für mich scheint die Umstellung der Architektur auf Prototypen mein Problem gelöst zu haben. Posting für den Fall, dass jemand anderes auf dieses Problem stößt, es aber bereits tut export default

1159020cookie-checkFehler: *.default ist kein Konstruktor

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy