Storybook: TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden

Erstellt am 15. Jan. 2020  ·  55Kommentare  ·  Quelle: storybookjs/storybook

Beschreibe den Fehler
Gerade jetzt auf 5.3.3 aktualisiert und unser Angular-Build schlägt mit folgenden Fehlern fehl:

[ng]
[ng] ERROR in ../../node_modules/@storybook/channels/dist/index.d.ts:25:9 - error TS1086: An accessor cannot be declared in an ambient context.
[ng]
[ng] 25     get hasTransport(): boolean;
[ng]            ~~~~~~~~~~~~

Aus einem schnellen Google geht hervor, dass andere Repos aufgrund der Verwendung von TypeScript 3.7.0 mit demselben Problem konfrontiert sind - Angular ist jedoch auf <3.5.0 beschränkt

Ähnliche Fehler
https://github.com/nestjs/nest/issues/3513
https://github.com/googleapis/node-gtoken/issues/244

Ich glaube, die bahnbrechende Änderung kommt direkt von TypeScript https://github.com/microsoft/TypeScript/issues/33939 - aber bis ein Fix veröffentlicht wird, muss die index.d.ts -Datei mit npm i typescript@~3.6.0 (Tauschen Sie ^ gegen ~ )

System:

    OS: macOS Mojave 10.14.6
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
  Binaries:
    Node: 12.14.1 - /usr/local/bin/node
    npm: 6.13.4 - /usr/local/bin/npm
  Browsers:
    Chrome: 79.0.3945.117
    Safari: 13.0.4
  npmPackages:
    @storybook/addon-actions: ^5.3.3 => 5.3.3
    @storybook/addon-knobs: ^5.3.3 => 5.3.3
    @storybook/addon-links: ^5.3.3 => 5.3.3
    @storybook/addon-notes: ^5.3.3 => 5.3.3
    @storybook/addon-storyshots: ^5.3.3 => 5.3.3
    @storybook/addons: ^5.3.3 => 5.3.3
    @storybook/angular: ^5.3.3 => 5.3.3
    @storybook/cli: ^5.3.3 => 5.3.3
angular bug has workaround typescript

Hilfreichster Kommentar

Versuchen Sie " skipLibCheck": true , in tsconfig.json, z.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Hoffe es wird dir helfen !!

Alle 55 Kommentare

Ich hatte einen Versuch, das Upgrade durchzuführen, verlor mich aber in der Paketstruktur. 😅 - Das Endergebnis (nachdem dist-Dateien generiert wurden) sollte @storybook/channels/dist/index.d.ts:25 gehen lassen

Von

get hasTransport(): boolean;

Zu

readonly hasTransport: boolean;

Ich hatte das gleiche Problem. Ich löse es, indem ich das Typescript-Paket auf die neueste Version aktualisiere

Ich hatte das gleiche Problem. Ich löse es, indem ich das Typescript-Paket auf die neueste Version aktualisiere

@ Siropo Welche Version? Ich benutze Angular 8.3.20 und Typoskript 3.5.3. Und ich habe den gleichen Fehler beim Versuch, das Projekt zu erstellen.

@IsharaMadawa "Typoskript": "3.7.4"

@IsharaMadawa "Typoskript": "3.7.4"

@siropo Kannst du die package.json hier ablegen?

@IsharaMadawa warum? Versuchen Sie einfach, Ihre Typoskript-Version zu aktualisieren und zu überprüfen, ob sie funktioniert

Wenn Sie eine ältere Version von Angular ausführen, z. B. 8.1.0, wird der folgende Fehler angezeigt

The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.

Wenn Sie eine ältere Version von Angular ausführen, z. B. 8.1.0, wird der folgende Fehler angezeigt

The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.

Ja. Ich habe diesen Fehler bekommen und musste auch Angular aktualisieren

@IsharaMadawa Haben Sie ein Upgrade auf die eckige 9-RC-Version durchgeführt?
Ich sehe den folgenden Fehler
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
auch im Winkel 8.2.3

Dies funktioniert auch für uns mit der neuesten Version von Angular 8.2.x: /

image

Ich habe die Version 3.7.4 von Typescript und die Version 8.3.21 von Angular und erhalte die gleiche Nachricht! Bitte helfen Sie! :-)

Das Aktualisieren mit ng update --next @angular/cli --force auf 9.0.0-rc.12 , das typescript @ "3.7.5" , hat das Problem in der Tat behoben.

Das gleiche Problem mit typescript 3.7.5 und storybook/react 5.3.9

von update --next @ angle / cli --force
npm install typscript @ spätestens

;)

ng update --next @ angle / cli --force
npm install typscript @ spätestens

;)
Es hat funktioniert, danke Snargol.

Durch das Upgrade auf Angular 9 (und durch die Erweiterung Typescript 3.7.5) wurde dieses Problem behoben

Ein Upgrade auf TypeScript 3.7.x ist für Bibliotheksverwalter keine gute Option. Dies bedeutet, dass die Änderung von 3.6 auf 3.7 (technisch gesehen eine wichtige Änderung) an unsere Kunden weitergegeben wird und wir nicht davon ausgehen können, dass sie TypeScript problemlos aktualisieren können.

@ndelangen Ich denke, dies kann behoben werden, indem https://github.com/storybookjs/storybook/blob/next/package.json#L218 in typescript@~3.6.0 geändert wird , da typescript@^3.4.0 in 3.7.5 jetzt. Dann können wir das 3.7-Upgrade bis Storybook 6.0 speichern, da es sich tatsächlich um eine bahnbrechende Änderung handelt.

Was denken Sie?

Klingt nach einem Plan @lychyi

Möchten Sie eine PR für die Filiale next eröffnen?

Wir werden es in master auswählen und als Patch

Du hast es!

@ndelangen @shilman

Sollte Storybook 6 TypeScript 3.7 verwenden, da es sowieso als bahnbrechende Änderung angeboten wird? Wenn ja, denke ich, dass dies tatsächlich in master und nicht in next geändert werden sollte. Die aktuelle PR # 9826 ist gegen next aber ich kann das noch einmal aufwärmen, um stattdessen auf master zu verweisen. Lassen Sie es mich wissen.

Wenn TS 3.7+ nicht wirklich wichtig ist, kann es daher auch als Teil von Storybook 7 oder höher aktualisiert werden?

funktioniert bei mir @lychyi. Vielen Dank, dass Sie sich darum gekümmert und darüber nachgedacht haben !!! 💯

Zu: 3.7 in Storybook 6.0. Ich bin mir nicht sicher, ob 3.7 notwendig ist. Ich werde einen der Typoskript-Leute mit diesem @ kroeder @gaetanmaisse sprechen lassen

FWIW, next bereits 3.7, was zu seinem Vorteil wirklich nette Funktionen wie die optionale Verkettung ( foo?.bar ) und den nullischen Koaleszenzoperator ( foo ?? bar ) bietet. Dies nur in master für Storybook 5.3.x zu ändern, würde den aktuellen Stand der Dinge am wenigsten stören.

Außerdem habe ich gerade erfahren, dass die Getter / Setter-Emission nur eine bahnbrechende Änderung für "typescript": "<=3.5" . TS 3.6 hat diese Funktion zukunftssicher gemacht. Eine weitere Option besteht darin, dass Benutzer auf TS3.6 aktualisieren, wenn sie aus irgendeinem Grund kein Upgrade auf TS3.7 durchführen können. Änderungen in TS3.6 zu brechen ist bei weitem nicht so schlimm.

Die Verwendung von TS3.7 schmerzt jedoch Angular-Benutzer, die noch kein Upgrade auf 9.x durchführen können. Angular 8.x ist auf ~3.5.3 gesperrt .

Der wichtigste Kompromiss, den ich vorgeschlagen habe, ist: _ "Würden wir gerne sagen, dass Storybook 6 nicht mit Angular 8 kompatibel ist, damit wir das Neueste und Beste nutzen können, das TypeScript 3.7 zu bieten hat?" _

@lychyi Tolle Zusammenfassung. Uninformiertes Bauchgefühl sagt definitiv 3,7 für 6,0. Nutze die Zukunft !! 😈

@lychyi Danke für die tolle Arbeit! 👏 👏

Würden wir gerne sagen, dass Storybook 6 nicht mit Angular 8 kompatibel ist, damit wir das Neueste und Beste nutzen können, was TypeScript 3.7 zu bieten hat?

Für mich ist es etwas schwierig, SB 6 nicht mit Angular <9 kompatibel zu machen, da Angular 9 nur wenige Tage ausfällt. Viele Pakete sind nicht bereit für diese neue Version, die für Angular-Neulinge eine echte Hauptversion ist, die eine neue Kompilierungs- und Rendering-Pipeline einführt. Daher kann die Migration auf Angular 9 für ein großes Monorepo-Projekt (wie das, mit dem ich arbeite) nicht durchgeführt werden bei der Arbeit).

Da Verbesserungen, die durch TS 3.7 gebracht werden, in SB monorepo derzeit nicht weit verbreitet sind, können wir TS 3.6 möglicherweise beibehalten (also die PR in next + Cherry Pick auf master ), bis wir einen Weg zur Arbeit finden um dieses Problem. Vielleicht ein Projekt, das Sie sich ansehen sollten: https://github.com/sandersn/downlevel-dts Es ermöglicht das Generieren alter Definitionsdateien basierend auf neuen 🤷‍♂

@gaetanmaisse Du bist viel mehr in Kontakt mit der TS / Angular-Welt, also werde ich letztendlich mit deinem Urteil darüber gehen. Ich möchte jedoch auf einige Dinge hinweisen:
1) Die aktuelle Schätzung für SB6 ist Ende April und zu diesem Zeitpunkt wird NG9 einige Monate alt sein
2) Wenn dies tatsächlich eine bahnbrechende Änderung ist und wir sie jetzt nicht ändern, ist das nächste Mal, wenn wir sie ändern können, 7.0, was wahrscheinlich ein Jahr Pause sein wird.

Wenn wir es mit 3.6 reparieren können, ist das natürlich noch besser! In Storybook wäre es großartig, optionale Verkettungen usw. zu verwenden, obwohl dies vermutlich für die Entwicklungsabhängigkeit und nicht für die Abhängigkeit relevant ist.

@shilman Ich stimme dir vollkommen zu 💯 und ich bin ziemlich enttäuscht, dass ich 3.6 bis SB7 behalten muss.

Da SB6 wochenlang immer noch in Alpha ist, sollten wir sagen, dass unser Ziel darin besteht, TS 3.7+ in SB6 zu haben und einen Weg zu finden, um weiterhin mit Angular <= 8 kompatibel zu sein. Und wenn dies nicht möglich ist, siehe Ende März oder Anfang April, wie NG9 übernommen wurde, und diskutieren, wie die Unterstützung von Angular <= 8 eingestellt werden soll.

@gaetanmaisse Ich spiele mit einem Zweig herum, um Downlevel-DTS zu nutzen. Zuerst habe ich es verworfen, weil es kein gepflegter Teil von TypeScript ist, aber nachdem ich ein wenig darüber nachgedacht habe, könnte es eine praktikable Option sein, TS3.7 + verwenden zu lassen und trotzdem mit <= TS3.5-Benutzern kompatibel zu sein. Geben Sie mir ein wenig Zeit, um die Änderungen zu überprüfen, und dann können wir sehen, ob sich die Wartung lohnt. Die Build-Skripte sind ziemlich ordentlich, daher sollte dies nicht zu schwierig sein.

@gaetanmaisse PR ist

Vielen Dank für die Gelegenheit, einen Beitrag zu leisten!

Das Aktualisieren mit ng update --next @angular/cli --force auf 9.0.0-rc.12 , das typescript @ "3.7.5" , hat das Problem in der Tat behoben.

Dies löste auch mein Problem! Vielen Dank!

Ok, aber wie kann dieses Problem ohne Typoskript-Update behoben werden?

@ColCh wir arbeiten daran https://github.com/storybookjs/storybook/pull/9847 es sollte bald verfügbar sein! 👏 👏 @lychyi

Vielen Dank! Diese PR scheint das Problem zu beheben.

Ok, geduldig darauf warten :) keine Eile

Wow das war schnell!

Aber, @gaetanmaisse , können wir erwarten, dass dieses Commit auf die Version

@ColCh Es wird! Wir testen, ob mit der neuesten Version 6.0.0-alpha alles in Ordnung ist, und veröffentlichen sie dann in einer 5.3.x-Version 😉

Oh ok. Danke 🙂

Ich habe die folgende Konfiguration und erhalte immer noch den Fehler:

""

 @angular/cli": "7.3.8",
"@angular/compiler-cli": "7.2.8",
"@angular/language-service": "7.2.3",
"@babel/core": "^7.7.7",
"@babel/preset-env": "^7.8.4",
"@babel/preset-typescript": "^7.8.3",
"@ngx-translate/core": "11.0.0",
"@storybook/addon-actions": "5.3.13",
"@storybook/addon-links": "5.3.13",
"@storybook/addon-notes": "5.3.13",
"@storybook/addon-storyshots": "^5.3.13",
"@storybook/addon-viewport": "^5.3.13",
"@storybook/addons": "^5.3.13",
"@storybook/angular": "5.3.13",
 "typescript": "^3.2.4"`

ng build --prod
ERROR in node_modules/@storybook/channels/dist/index.d.ts(25,9): error TS1086: An accessor cannot be declared in an ambient context.

@ cnestor1 Der Bugfix wurde in 5.3.x noch nicht veröffentlicht, er sollte in der nächsten sein 😉

Thx, ich habe es falsch verstanden und dachte, es wäre gewesen.
Was ist deine ETA für die nächste Version?
Gibt es auch eine Möglichkeit, eine ältere Version von Storybook zu verwenden, um das Problem zu umgehen, bis es behoben ist?
Angular 9 wurde in meiner Firma nicht überprüft, daher muss ich etwas warten, bevor ich ein Upgrade durchführen kann.

@ cnestor1 ETA in den nächsten 5 Tagen

Ich habe diesen Fehler vorübergehend behoben, indem ich die im Fehler erwähnte nodemodules-Datei (.d.ts-Datei) besucht und sie dann mit Strg + s gespeichert habe. Dadurch wird der Fehler behoben, da Ihr Code kompiliert wird, der Fehler jedoch weiterhin vorhanden ist

Sohn einer Waffe !! Ich habe gerade https://github.com/storybookjs/storybook/releases/tag/v5.3.14 mit PR # 9847 veröffentlicht, das auf dieses Problem verweist. Aktualisieren Sie noch heute, um es auszuprobieren!

Schließen Sie dieses Problem. Bitte öffnen Sie erneut, wenn Sie der Meinung sind, dass noch mehr zu tun ist.

Das gleiche Problem bekommen :)

@rohittagadiya hast du auf den neuesten Stand gebracht?

Versuchen Sie " skipLibCheck": true , in tsconfig.json, z.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Hoffe es wird dir helfen !!

Versuchen Sie " skipLibCheck": true , zum Beispiel in tsconfig.json.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Ich hoffe es hilft dir !!

Funktioniert !!!! Vielen Dank

Versuchen Sie " skipLibCheck": true , in tsconfig.json, z.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Hoffe es wird dir helfen !!

Funktioniert ziemlich gut, danke <3

Das Hinzufügen von "skipLibCheck": true in den compilerOptions in der Datei tsconfig.json hat für mich funktioniert. Ich danke dir sehr .

Chiming in - skipLibCheck: true wirkt ein Zauber. Dies ist ideal für diejenigen, die keinen ng update Mid-QA-Zyklus riskieren können. Vielen Dank!

Versuchen Sie " skipLibCheck": true , in tsconfig.json, z.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Hoffe es wird dir helfen !!

Vielen Dank. Gut arbeiten.

Versuchen Sie " skipLibCheck": true , in tsconfig.json, z.

"compilerOptions": {
    "baseUrl": "src",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    **"skipLibCheck": true,**
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },

Hoffe es wird dir helfen !!

Danke <3

Version ändern zu:
"ngx-swiper-wrapper": "~ 8.0.1"

Kann dieses Problem lösen

von update --next @ angle / cli --force
npm install typscript @ spätestens

;)

Im mit Winkel 5 ist es möglich, ngx-Datei-Upload zu verwenden
errr

update @ angle-devkit / build-angle

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen