@ Types / Sequelize Error TS1086: Ein Accessor kann nicht im Umgebungskontext deklariert werden


10

Ich habe ein Projekt, das diesen Fehler anzeigt, wenn ich 'tsc' ausführe:

../modules/node_modules/sequelize/types/lib/transaction.d.ts:33:14 - error TS1086: An accessor cannot be declared in an ambient context.

33   static get LOCK(): LOCK;
                ~~~~

../modules/node_modules/sequelize/types/lib/transaction.d.ts:40:7 - error TS1086: An accessor cannot be declared in an ambient context.

40   get LOCK(): LOCK;
         ~~~~

Meine Versionen sind:

  • "@ types / sequelize": "^ 4.28.6"
  • "Fortsetzung": "^ 5.8.10"
  • "sequelize-typescript": "1.0.0-beta.4"

Das Projekt funktioniert gut mit nodemon, schlägt jedoch fehl, wenn ich versuche, das Typoskript zu kompilieren. Kennt jemand diesen Fehler?

Vielen Dank.

Antworten:


13

Sie müssen Typoskript 3.7 verwenden.

aus Typoskript 3.7 Versionshinweise:

To detect the issue around accessors, TypeScript 3.7 will now emit get/set accessors in .d.ts files so that in TypeScript can check for overridden accessors.

wurde vermutlich sequelizemit Typoskript 3.7 kompiliert und gibt Definitionsdateien aus, die frühere Versionen nicht verstehen. Sie müssen also auf Typoskript 3.7 aktualisieren oder eine frühere Version von Sequelize verwenden.


Was ist, wenn ich nicht auf 3.7 aktualisieren kann? Hast du eine andere Idee?
Shlomi Levi

es funktioniert wie ein Zauber
Aditya Kresna Permana

@ShlomiLevi Verwenden Sie eine frühere Version von@types/sequelize
Aviad Hadad

3
Winkel 8 kann nur mit Typoskript <V3.5
Ratshiḓaho Wayne

Sie haben Recht, ich hatte dieses Problem kürzlich und nach einigen Suchanfragen habe ich ein im Github geschlossenes Problem entdeckt. Um das Problem zu beheben, musste ich die Typoskript-Version auf die Version 3.7.2 aktualisieren.
Thiago Valentim

23

Ich habe Angular 8 . Es funktioniert mit der Typoskript-Version 3.4.5. Lösen Sie dieses Problem, indem Sie die folgenden Schritte ausführen.

Schritt 1) Wechseln Sie zur Datei tsconfig.json

Schritt 2) Fügen Sie skipLibCheck: true im Objekt "compilerOptions" hinzu. Für mich geht das.

"compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "strict": true,
    "target": "es5",
    "declaration": true,
    "declarationDir": "dist-debug/",
    "skipLibCheck": true, /// Needs to be true to fix wrong alias types being used

  },

Vielen Dank. "skipLibCheck": true (hinzugefügt zu tsconfig, das sich auf NestJs bezieht), funktionierte und NestJs mit einer App, die über die Nest-ng-App gestartet wurde.
Медведев

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.