@ 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.

Josel567
quelle

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.

Aviad Hadad
quelle
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

  },
krishn Patel
quelle
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.
Медведев
5

Die Einstellung "skipLibCheck": truehat bei mir funktioniert.

Kimamula
quelle
Hat auch für mich gearbeitet, danke.
Elektrotyp
In welcher Datei muss ich das ändern?
krishn Patel
tsconfig.json Datei
29er