Storybook: TS1086: No se puede declarar un descriptor de acceso en un contexto ambiental

Creado en 15 ene. 2020  ·  55Comentarios  ·  Fuente: storybookjs/storybook

Describe el error
Se actualizó a 5.3.3 en este momento y nuestra compilación Angular está fallando con lo siguiente:

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

De una búsqueda rápida en Google, parece que otros repositorios enfrentan el mismo problema debido al uso de TypeScript 3.7.0, pero Angular está restringido a <3.5.0

Errores similares
https://github.com/nestjs/nest/issues/3513
https://github.com/googleapis/node-gtoken/issues/244

Creo que el cambio radical proviene de TypeScript directamente https://github.com/microsoft/TypeScript/issues/33939 , pero hasta que se publique una solución, el archivo index.d.ts deberá regenerarse con npm i typescript@~3.6.0 (intercambia ^ por ~ )

Sistema:

    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

Comentario más útil

Prueba " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Todos 55 comentarios

Intenté hacer la actualización pero me perdí en la estructura del paquete 😅 - El resultado final (después de que se generen los archivos dist) debería hacer que @storybook/channels/dist/index.d.ts:25 go

Desde

get hasTransport(): boolean;

A

readonly hasTransport: boolean;

Tuve el mismo problema. Lo resuelvo actualizando el paquete Typescript a la última versión

Tuve el mismo problema. Lo resuelvo actualizando el paquete Typescript a la última versión

@siropo ¿Qué versión? Estoy usando angular 8.3.20 y mecanografiado 3.5.3. Y obtuve el mismo error cuando intento construir el proyecto.

@IsharaMadawa "mecanografiado": "3.7.4"

@IsharaMadawa "mecanografiado": "3.7.4"

@siropo ¿Puedes soltar el package.json aquí?

@IsharaMadawa ¿

Si está ejecutando una versión anterior de Angular, por ejemplo, 8.1.0, verá el siguiente error

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

Si está ejecutando una versión anterior de Angular, por ejemplo, 8.1.0, verá el siguiente error

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

si. recibí este error y tuve que actualizar angular también

@IsharaMadawa ¿Actualizaste a la versión angular 9 rc?
Veo el siguiente error
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
en angular 8.2.3 también

Esto también nos rompe al usar la última versión de Angular 8.2.x: /

image

¡Tengo la versión 3.7.4 de Typescript y la versión 8.3.21 de Angular y recibo el mismo mensaje! ¡Por favor ayuda! :-)

Actualizar con ng update --next @angular/cli --force a 9.0.0-rc.12 que usa typescript @ "3.7.5" , ha ayudado al problema de hecho.

Obteniendo el mismo problema con typescript 3.7.5 y storybook/react 5.3.9

de actualización --siguiente @ angular / cli --force
npm instalar mecanografiado @ último

;)

ng actualización --next @ angular / cli --force
npm instalar mecanografiado @ último

;)
Funcionó, gracias Snargol.

Confirmado, actualizando a Angular 9 (y por extensión Typecript 3.7.5), este problema está resuelto

Actualizar a TypeScript 3.7.x no es una gran opción para los mantenedores de bibliotecas. Esto significa que el cambio de 3.6 a 3.7 (técnicamente un cambio importante) se transmite a nuestros consumidores y no podemos asumir que ellos tampoco pueden actualizar fácilmente TypeScript.

@ndelangen Creo que esto se puede rectificar cambiando https://github.com/storybookjs/storybook/blob/next/package.json#L218 a typescript@~3.6.0 , ya que typescript@^3.4.0 resuelve en 3.7.5 ahora mismo. Luego, podemos guardar la actualización 3.7 hasta Storybook 6.0, ya que en realidad es un cambio importante.

¿Qué piensas?

Suena como un plan @lychyi

¿Quiere abrir un PR contra la sucursal next ?

Lo seleccionaremos en master y lo lanzaremos como parche

¡Lo tienes!

@ndelangen @shilman

¿Storybook 6 debería utilizar TypeScript 3.7 ya que se ofrecerá como un cambio importante de todos modos? Si es así, creo que esto debería cambiarse en master y no en next . El PR # 9826 actual está en contra de next pero puedo repetirlo para apuntar a master lugar, avíseme.

En consecuencia, si TS 3.7+ no es realmente importante, ¿podría actualizarse como parte de Storybook 7 o más allá también?

funciona para mí @lychyi. muchas gracias por encargarte de esto y pensarlo bien !!! 💯

re: 3.7 en el libro de cuentos 6.0. No estoy seguro de si es necesario 3.7, dejaré que uno de los tipos mecanografiados hable con eso @ndelangen @kroeder @gaetanmaisse

FWIW, next ya utiliza 3.7, que para su mérito, tiene características realmente interesantes como el encadenamiento opcional ( foo?.bar ) y el operador coalescente nulo ( foo ?? bar ). Cambiar esto solo en master para Storybook 5.3.x sería lo menos perjudicial para el estado actual de las cosas.

Además, me acabo de enterar de que el getter / setter emit es solo un cambio rotundo para "typescript": "<=3.5" . TS 3.6 preparó esta función para el Los cambios importantes en TS3.6 no son tan malos.

Sin embargo, el uso de TS3.7 todavía perjudica a las personas de Angular que aún no pueden actualizar a 9.x Angular 8.x está bloqueado en ~3.5.3 .

Entonces, la principal compensación que sugerí considerar es: _ "¿Nos sentiríamos cómodos diciendo que Storybook 6 no es compatible con Angular 8 para poder aprovechar lo último y lo mejor que TypeScript 3.7 tiene para ofrecer?" _

@lychyi Gran resumen. La intuición desinformada dice definitivamente 3.7 por 6.0. ¡¡Aprovecha el futuro !! 😈

@lychyi ¡ Gracias por el gran trabajo! 👏 👏

¿Nos sentiríamos cómodos diciendo que Storybook 6 no es compatible con Angular 8 para poder aprovechar lo último y lo mejor que TypeScript 3.7 tiene para ofrecer?

Para mí, es un poco duro hacer que SB 6 no sea compatible con Angular <9 porque Angular 9 está disponible solo por unos días. Muchos paquetes no están listos para esta nueva versión, que para los novatos de Angular es una versión principal real que presenta una nueva canalización de compilación y renderizado, por lo que no se puede migrar a Angular 9 para un gran proyecto de monorepo (como el que estoy trabajando en el trabajo).

Como las mejoras aportadas por TS 3.7 no se usan ampliamente en SB monorepo, tal vez podamos mantener TS 3.6 (así que combine el PR en next + selección de cereza en master ) hasta que encontremos una manera de trabajar en torno a este tema. Tal vez un proyecto para echar un vistazo: https://github.com/sandersn/downlevel-dts permite generar archivos de definición antiguos basados ​​en otros nuevos 🤷‍♂

@gaetanmaisse Estás mucho más en contacto con el mundo TS / Angular, así que en última instancia seguiré tu opinión sobre esto. Sin embargo, quiero señalar algunas cosas:
1) La estimación actual de SB6 es a finales de abril y para ese momento NG9 tendrá unos meses de antigüedad.
2) Si se trata de un cambio importante y no lo cambiamos ahora, la próxima vez que podamos cambiarlo es 7.0, que probablemente será un año de descanso.

Por supuesto, si podemos arreglarlo con 3.6, ¡eso es aún mejor! Dentro de Storybook, sería genial comenzar a usar el encadenamiento opcional, etc., aunque supongo que eso es relevante para la dependencia de desarrollo y no para la dependencia.

@shilman Estoy totalmente de acuerdo contigo 💯 y estoy bastante decepcionado de tener que mantener 3.6 hasta SB7.

Como SB6 todavía está en alfa durante semanas, creo que deberíamos decir que nuestro objetivo es tener TS 3.7+ en SB6 y encontrar una manera de seguir siendo compatible con Angular <= 8. Y si no es posible, consulte a finales de marzo. o el comienzo de Apris sobre cómo se adoptó NG9 y discuta sobre la eliminación del soporte de Angular <= 8.

@gaetanmaisse Estoy jugando con una rama para utilizar downlevel-dts. Al principio lo descarté porque no es una parte mantenida de TypeScript, pero después de pensarlo un poco, podría ser una opción viable para permitirnos usar TS3.7 + y seguir siendo compatible con usuarios <= TS3.5. Dame un poco para verificar los cambios y luego veremos si vale la pena el mantenimiento. Los scripts de compilación están bastante ordenados, por lo que esto no debería ser demasiado difícil.

@gaetanmaisse PR está activo, avíseme si tiene alguna pregunta.

¡Gracias por la oportunidad de contribuir!

Actualizar con ng update --next @angular/cli --force a 9.0.0-rc.12 que usa typescript @ "3.7.5" , ha ayudado al problema de hecho.

¡Esto también resolvió mi problema! ¡Muchas gracias!

Ok, pero ¿cómo resolver este problema sin una actualización de mecanografiado?

@ColCh estamos trabajando en él https://github.com/storybookjs/storybook/pull/9847 ¡ debería estar disponible pronto! 👏 👏 @lychyi

¡Gracias! Ese RP parece solucionar el problema.

Ok, esperando pacientemente :) sin prisa

¡Vaya, eso fue rápido!

Pero, @gaetanmaisse , ¿podemos esperar que este compromiso sea actualizado a la versión v5? Eso estaría bien

@ColCh ¡ Lo hará! Estamos probando que todo esté bien en la última versión 6.0.0-alpha y luego la lanzaremos en una versión 5.3.x 😉

Ah, vale. Gracias 🙂

Tengo la siguiente configuración y sigo recibiendo el error:

"

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

Gracias, entendí mal y pensé que había sido.
¿Cuál es su ETA para el próximo lanzamiento?
Además, ¿hay alguna forma de usar una versión anterior de Storybook para evitar el problema hasta que se solucione?
Angular 9 no ha sido examinado en mi empresa, por lo que tengo que esperar un poco antes de poder actualizar.

@ cnestor1 ETA en los próximos 5 días

Resolví este error temporalmente visitando el archivo nodemodules (archivo .d.ts) mencionado en el error y luego guardándolo con ctrl + s, esto resolverá el error, ya que su código se compilará pero el error seguirá ahí.

¡¡Hijo de un arma!! Acabo de publicar https://github.com/storybookjs/storybook/releases/tag/v5.3.14 que contiene PR # 9847 que hace referencia a este problema. ¡Actualice hoy para probarlo!

Cerrando este tema. Vuelva a abrir si cree que aún hay más por hacer.

Obteniendo el mismo problema :)

@rohittagadiya , ¿actualizaste a la última

Prueba " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Pruebe " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Trabajos !!!! Gracias

Prueba " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Funciona bastante bien, gracias <3

Agregar "skipLibCheck": true, en compilerOptions dentro del archivo tsconfig.json funcionó para mí. Muchas gracias .

Intervenir - skipLibCheck: true funciona de maravilla. Esto es ideal para aquellos que no pueden arriesgarse a un ciclo de ng update mitad de control de calidad. ¡Gracias!

Prueba " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Gracias. Trabajando bien.

Prueba " skipLibCheck": true , dentro de tsconfig.json, por ejemplo.

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

Espero que te ayude !!

Gracias <3

cambiar la versión a:
"ngx-swiper-wrapper": "~ 8.0.1"

Puede resolver este problema

de actualización --siguiente @ angular / cli --force
npm instalar mecanografiado @ último

;)

Estoy usando angular 5, ¿es posible usar ngx-file-upload?
errr

actualizar @ angular-devkit / build-angular

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

rpersaud picture rpersaud  ·  3Comentarios

tlrobinson picture tlrobinson  ·  3Comentarios

shilman picture shilman  ·  3Comentarios

ZigGreen picture ZigGreen  ·  3Comentarios

miljan-aleksic picture miljan-aleksic  ·  3Comentarios