Storybook: TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant

Créé le 15 janv. 2020  ·  55Commentaires  ·  Source: storybookjs/storybook

Décrivez le bogue
Mise à niveau vers 5.3.3 tout à l'heure et notre version angulaire échoue avec les éléments suivants:

[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]            ~~~~~~~~~~~~

D'un rapide google, il semble que d'autres dépôts soient confrontés au même problème en raison de l'utilisation de TypeScript 3.7.0 - mais Angular est limité à <3.5.0

Erreurs similaires
https://github.com/nestjs/nest/issues/3513
https://github.com/googleapis/node-gtoken/issues/244

Je pense que le changement de rupture provient directement de TypeScript https://github.com/microsoft/TypeScript/issues/33939 - mais jusqu'à ce qu'un correctif soit publié, le fichier index.d.ts devra être régénéré avec npm i typescript@~3.6.0 (swap ^ pour ~ )

Système:

    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

Commentaire le plus utile

Essayez " skipLibCheck": true , dans tsconfig.json par exemple.

"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"
    ]
  },

J'espère que cela vous aidera !!

Tous les 55 commentaires

J'ai essayé de faire la mise à niveau mais je me suis perdu dans la structure du package 😅 - Le résultat final (après la génération des fichiers dist) devrait faire @storybook/channels/dist/index.d.ts:25 go

De

get hasTransport(): boolean;

À

readonly hasTransport: boolean;

J'ai eu le même problème. Je le résous en mettant à jour le package Typescript vers la dernière version

J'ai eu le même problème. Je le résous en mettant à jour le package Typescript vers la dernière version

@siropo Quelle version? J'utilise angulaire 8.3.20 et dactylographié 3.5.3. Et j'ai eu la même erreur en essayant de construire le projet.

@IsharaMadawa "dactylographié": "3.7.4"

@IsharaMadawa "dactylographié": "3.7.4"

@siropo Pouvez-vous déposer le package.json ici?

@IsharaMadawa pourquoi? Essayez simplement de mettre à jour votre version dactylographiée et de vérifier si cela fonctionne

Si vous utilisez une ancienne version d'Angular, par exemple 8.1.0, vous verrez l'erreur suivante

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

Si vous utilisez une ancienne version d'Angular, par exemple 8.1.0, vous verrez l'erreur suivante

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

Oui. j'ai eu cette erreur et j'ai dû mettre à jour angular également

@IsharaMadawa Avez-vous mis à niveau vers la version angular 9 rc?
Je vois l'erreur ci-dessous
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
en angulaire 8.2.3 également

Cela casse également pour nous en utilisant la dernière version d'Angular 8.2.x: /

image

J'ai la version 3.7.4 de Typescript et la version 8.3.21 d'Angular et j'obtiens le même message! Veuillez aider! :-)

La mise à jour avec ng update --next @angular/cli --force en 9.0.0-rc.12 qui utilise typescript @ "3.7.5" , a effectivement

Obtenir ce même problème avec typescript 3.7.5 et storybook/react 5.3.9

de mise à jour --next @ angular / cli --force
npm install dactylographié @ dernier

;)

ng update --next @ angular / cli --force
npm install dactylographié @ dernier

;)
Cela a fonctionné, merci Snargol.

Confirmé, mise à niveau vers Angular 9 (et par extension Typescript 3.7.5), ce problème est résolu

La mise à niveau vers TypeScript 3.7.x n'est pas une excellente option pour les mainteneurs de bibliothèques. Cela signifie que le changement de 3.6 à 3.7 (techniquement un changement de rupture) est transmis à nos consommateurs et nous ne pouvons pas supposer qu'ils peuvent facilement mettre à jour TypeScript non plus.

@ndelangen Je pense que cela peut être rectifié en changeant https://github.com/storybookjs/storybook/blob/next/package.json#L218 en typescript@~3.6.0 , puisque typescript@^3.4.0 résout en 3.7.5 dès maintenant. Ensuite, nous pouvons enregistrer la mise à jour 3.7 jusqu'à Storybook 6.0 car il s'agit en fait d'un changement radical.

Qu'est-ce que tu penses?

Cela ressemble à un plan @lychyi

Vous voulez ouvrir un PR contre la succursale next ?

Nous allons le sélectionner dans master et le publier sous forme de patch @shilman

Tu l'as eu!

@ndelangen @shilman

Storybook 6 devrait-il utiliser TypeScript 3.7 car il sera de toute façon proposé comme un changement de rupture? Si c'est le cas, je pense que cela devrait en fait être changé en master et non en next . Le PR # 9826 actuel est contre next mais je peux le répéter pour pointer vers master place, faites le moi savoir.

Par conséquent, si TS 3.7+ n'est pas vraiment important, il pourrait également être mis à niveau dans le cadre de Storybook 7 ou au-delà?

fonctionne pour moi @lychyi. merci beaucoup d'avoir pris soin de cela et d'y avoir réfléchi !!! 💯

re: 3.7 dans le livre de contes 6.0. Je ne suis pas sûr de savoir si la version 3.7 est nécessaire, je vais laisser l'un des types dactylographiés parler à @ndelangen @kroeder @gaetanmaisse

FWIW, next utilise déjà 3.7, qui à son mérite, a des fonctionnalités vraiment intéressantes comme le chaînage facultatif ( foo?.bar ) et l'opérateur de fusion nul ( foo ?? bar ). Changer cela uniquement dans master pour Storybook 5.3.x serait le moins perturbateur pour l'état actuel des choses.

Aussi, je viens d'apprendre que l'émission getter / setter n'est qu'un changement de rupture pour "typescript": "<=3.5" . TS 3.6 a pérennisé cette fonctionnalité, donc une autre option consiste à demander aux gens de passer à TS3.6 s'ils ne peuvent pas passer à TS3.7 pour une raison quelconque. Les changements de rupture dans TS3.6 ne sont pas aussi mauvais.

Cependant, l'utilisation de TS3.7 fait toujours mal aux personnes Angular qui ne sont pas encore en mesure de passer à 9.x. Angular 8.x est verrouillé à ~3.5.3 .

Donc, le principal compromis sur lequel j'ai suggéré de peser est: _ "Serions-nous à l'aise de dire que Storybook 6 n'est pas compatible avec Angular 8 afin que nous puissions tirer parti du dernier et du meilleur que TypeScript 3.7 a à offrir?" _

@lychyi Excellent résumé. La sensation intestinale non informée indique clairement 3.7 pour 6.0. Saisissez l'avenir !! 😈

@lychyi Merci pour l'excellent travail! 👏 👏

Serions-nous à l'aise de dire que Storybook 6 n'est pas compatible avec Angular 8 afin que nous puissions tirer parti du dernier et du meilleur que TypeScript 3.7 a à offrir?

Pour moi, c'est un peu dur de rendre SB 6 non compatible avec Angular <9 car Angular 9 n'est sorti que pour quelques jours. De nombreux packages ne sont pas prêts pour cette nouvelle version, qui pour Angular newbie est une véritable version majeure qui introduit un nouveau pipeline de compilation et de rendu, et donc la migration vers Angular 9 ne peut pas être effectuée pour un gros projet monorepo (comme celui avec lequel je travaille au travail).

Comme les améliorations apportées par TS 3.7 ne sont actuellement pas largement utilisées dans SB monorepo, nous pouvons peut-être garder TS 3.6 (donc fusionner le PR dans next + cherry pick sur master ) jusqu'à ce que nous trouvions un moyen de travailler autour de ce problème. Peut-être un projet à regarder: https://github.com/sandersn/downlevel-dts il permet de générer d'anciens fichiers de définition à partir de nouveaux 🤷‍♂

@gaetanmaisse Vous êtes beaucoup plus en contact avec le monde TS / Angular, donc en fin de compte, je vais
1) L'estimation actuelle sur SB6 est fin avril et à ce moment-là NG9 aura quelques mois
2) S'il s'agit effectivement d'un changement de rupture et que nous ne le changeons pas maintenant, la prochaine fois que nous pourrons le changer, il sera 7.0, ce qui sera probablement un an.

Bien sûr, si nous pouvons le réparer avec 3.6, c'est encore mieux! Dans Storybook, ce serait génial de commencer à utiliser le chaînage facultatif, etc., bien que je suppose que cela concerne la dépendance de développement et non la dépendance.

@shilman Je suis totalement d'accord avec vous you et je suis assez déçu de devoir garder 3.6 jusqu'à SB7.

Comme SB6 est encore en alpha depuis des semaines je pense qu'il faut dire que notre objectif est d'avoir TS 3.7+ dans SB6 et trouver un moyen d'être toujours compatible avec Angular <= 8. Et si ce n'est pas possible, voir fin mars ou au début d'Apris comment NG9 a été adopté et discutez de la suppression du support angulaire <= 8.

@gaetanmaisse Je joue avec une branche pour utiliser des dts de niveau inférieur. Au début, je l'ai rejeté car ce n'est pas une partie maintenue de TypeScript, mais après y avoir réfléchi un peu, cela pourrait être une option viable pour nous permettre d'utiliser TS3.7 + tout en étant compatible avec les utilisateurs <= TS3.5. Donnez-moi un peu pour vérifier les modifications et nous pourrons voir si cela en vaut la peine. Les scripts de construction sont assez ordonnés, donc cela ne devrait pas être trop difficile.

@gaetanmaisse PR est en place, laissez-moi savoir si vous avez des questions.

Merci pour l'opportunité de contribuer!

La mise à jour avec ng update --next @angular/cli --force en 9.0.0-rc.12 qui utilise typescript @ "3.7.5" , a effectivement

Cela a aussi résolu mon problème! Merci beaucoup!

Ok mais comment résoudre ce problème sans mise à jour dactylographiée?

@ColCh nous y travaillons https://github.com/storybookjs/storybook/pull/9847 il devrait être disponible bientôt! 👏 👏 @lychyi

Je vous remercie! Ce PR semble résoudre le problème.

Ok, j'attends patiemment :) pas pressé

Wow c'était rapide!

Mais, @gaetanmaisse , pouvons-nous nous attendre à ce que ce commit soit rétroporté vers la version v5? Ce serait bien

@ColCh Ça le fera! Nous testons que tout va bien sur la dernière version 6.0.0-alpha, puis nous la publierons dans une version 5.3.x 😉

Ah d'accord. Merci 🙂

J'ai la configuration suivante et j'obtiens toujours l'erreur:

""

 @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 le correctif n'a pas encore été publié dans la version 5.3.x, il devrait être dans le prochain 😉

Thx, j'ai mal compris et j'ai pensé que c'était le cas.
Quel est votre ETA pour la prochaine version?
Existe-t-il également un moyen d'utiliser une ancienne version de Storybook pour contourner le problème jusqu'à ce qu'il soit résolu?
Angular 9 n'a pas été vérifié dans mon entreprise, je dois donc attendre un peu avant de pouvoir mettre à niveau.

@ cnestor1 ETA dans les 5 prochains jours

J'ai résolu cette erreur temporairement en visitant le fichier nodemodules (fichier .d.ts) mentionné dans l'erreur, puis en l'enregistrant par ctrl + s cela résoudra l'erreur car votre code sera compilé mais l'erreur sera toujours là

Vieille fripouille!! Je viens de publier https://github.com/storybookjs/storybook/releases/tag/v5.3.14 contenant PR # 9847 qui fait référence à ce problème. Mettez à niveau aujourd'hui pour l'essayer!

Clôture de ce numéro. Veuillez rouvrir si vous pensez qu'il reste encore beaucoup à faire.

Obtenir le même problème :)

@rohittagadiya avez-vous mis à jour à la dernière?

Essayez " skipLibCheck": true , dans tsconfig.json par exemple.

"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"
    ]
  },

J'espère que cela vous aidera !!

Essayez " skipLibCheck": true , dans tsconfig.json, par exemple.

"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"
    ]
  },

J'espère que ça t'aide !!

Travaux !!!! Merci

Essayez " skipLibCheck": true , dans tsconfig.json par exemple.

"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"
    ]
  },

J'espère que cela vous aidera !!

Fonctionne plutôt bien, merci <3

L'ajout de "skipLibCheck": true, dans le fichier compilerOptions à l'intérieur du fichier tsconfig.json a fonctionné pour moi. Merci beaucoup .

Chiming in - skipLibCheck: true fonctionne un charme. C'est génial pour ceux qui ne peuvent pas risquer un cycle de mi-QA ng update . Merci!

Essayez " skipLibCheck": true , dans tsconfig.json par exemple.

"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"
    ]
  },

J'espère que cela vous aidera !!

Je vous remercie. Fonctionne bien.

Essayez " skipLibCheck": true , dans tsconfig.json par exemple.

"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"
    ]
  },

J'espère que cela vous aidera !!

Merçi <3

changer la version en:
"ngx-swiper-wrapper": "~ 8.0.1"

Peut résoudre ce problème

de mise à jour --next @ angular / cli --force
npm install dactylographié @ dernier

;)

Im utilisant angular 5 est-il possible d'utiliser ngx-file-upload
errr

mise à jour @ angular-devkit / build-angular

Cette page vous a été utile?
0 / 5 - 0 notes