Descreva o bug
Fizemos upgrade para 5.3.3 agora mesmo e nossa construção Angular está falhando com o seguinte:
[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] ~~~~~~~~~~~~
Olhando rapidamente no Google, parece que outros repositórios estão enfrentando o mesmo problema devido ao uso do TypeScript 3.7.0 - mas o Angular é restrito a <3.5.0
Erros semelhantes
https://github.com/nestjs/nest/issues/3513
https://github.com/googleapis/node-gtoken/issues/244
Acredito que a alteração mais recente vem diretamente do TypeScript https://github.com/microsoft/TypeScript/issues/33939 - mas até que uma correção seja lançada, o arquivo index.d.ts
precisará ser regenerado com npm i typescript@~3.6.0
(troque ^
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
Eu tentei fazer a atualização, mas me perdi na estrutura do pacote 😅 - O resultado final (depois que os arquivos dist são gerados) deve fazer @storybook/channels/dist/index.d.ts:25
go
De
get hasTransport(): boolean;
Para
readonly hasTransport: boolean;
Eu tive o mesmo problema. Eu resolvo isso atualizando o pacote Typescript para a versão mais recente
Eu tive o mesmo problema. Eu resolvo isso atualizando o pacote Typescript para a versão mais recente
@siropo Qual versão? estou usando angular 8.3.20 e datilografado 3.5.3. E eu recebi o mesmo erro ao tentar construir o projeto.
@IsharaMadawa "typescript": "3.7.4"
@IsharaMadawa "typescript": "3.7.4"
@siropo Você pode soltar o package.json aqui?
@IsharaMadawa por quê? Tente atualizar sua versão datilografada e verifique se está funcionando
Se você estiver executando uma versão anterior do Angular, por exemplo, 8.1.0, você verá o seguinte erro
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
Se você estiver executando uma versão anterior do Angular, por exemplo, 8.1.0, você verá o seguinte erro
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
sim. eu recebi este erro e tive que atualizar o angular também
@IsharaMadawa Você atualizou para a versão angular 9 rc?
Eu vejo o erro abaixo
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
no angular 8.2.3 também
Isso também quebra para nós usando a versão mais recente do Angular 8.2.x: /
Tenho a versão 3.7.4 do Typescript e a versão 8.3.21 do Angular e estou recebendo a mesma mensagem! Por favor ajude! :-)
Atualizar com ng update --next @angular/cli --force
para 9.0.0-rc.12
que usa typescript @ "3.7.5"
realmente ajudou a resolver o problema.
Obtendo o mesmo problema com typescript 3.7.5
e storybook/react 5.3.9
de atualização --next @ angular / cli --force
npm install typescript @ mais recente
;)
ng update --next @ angular / cli --force
npm install typescript @ mais recente;)
Funcionou, obrigado Snargol.
Confirmado, atualizando para Angular 9 (e por extensão Typescript 3.7.5), este problema foi resolvido
Atualizar para TypeScript 3.7.x não é uma ótima opção para mantenedores de bibliotecas. Isso significa que a mudança de 3.6 para 3.7 (tecnicamente uma mudança importante) é passada para nossos consumidores e não podemos assumir que eles podem atualizar o TypeScript prontamente.
@ndelangen Acho que isso pode ser retificado alterando https://github.com/storybookjs/storybook/blob/next/package.json#L218 para typescript@~3.6.0
, já que typescript@^3.4.0
resolve para 3.7.5
agora. Então, podemos salvar a atualização do 3.7 até o Storybook 6.0, uma vez que, na verdade, é uma alteração importante.
O que você acha?
Parece um plano @lychyi
Quer abrir um PR contra a filial next
?
Vamos selecioná-lo em master
e lançar como um patch @shilman
Você entendeu!
@ndelangen @shilman
O Storybook 6 deve utilizar o TypeScript 3.7, uma vez que ele será oferecido como uma alteração inovadora de qualquer maneira? Nesse caso, acho que isso deveria ser alterado em master
e não em next
. O PR # 9826 atual é contra next
mas posso repetir isso para apontar para master
vez disso, me avise.
Consequentemente, se TS 3.7+ não for realmente importante, ele poderia ser atualizado como parte do Storybook 7 ou além também?
funciona para mim @lychyi. muito obrigado por cuidar disso e pensar nisso !!! 💯
re: 3.7 no livro de histórias 6.0. não tenho certeza se o 3.7 é necessário, vou deixar um dos caras datilografados falar com aquele @ndelangen @kroeder @gaetanmaisse
FWIW, next
já utiliza 3.7, que para seu mérito, tem recursos realmente interessantes como encadeamento opcional ( foo?.bar
) e o operador de coalescência nulo ( foo ?? bar
). Alterar isso apenas em master
para o Storybook 5.3.x seria o menos perturbador para o estado atual das coisas.
Além disso, acabei de saber que o getter / setter emit é apenas uma alteração significativa para "typescript": "<=3.5"
. O TS 3.6 preparou esse recurso para o mudanças no TS3.6 não é tão ruim.
No entanto, usar o TS3.7 ainda prejudica o pessoal do Angular que ainda não é capaz de atualizar para o 9.x. Angular 8.x está bloqueado em ~3.5.3
.
Portanto, a principal compensação que sugeri ponderar é: _ "Seria confortável dizer que o Storybook 6 não é compatível com o Angular 8 para que pudéssemos aproveitar o que há de mais recente e melhor que o TypeScript 3.7 tem a oferecer?" _
@lychyi Ótimo resumo. A intuição desinformada diz definitivamente 3,7 para 6,0. Aproveite o futuro !! 😈
@lychyi Obrigado pelo excelente trabalho! 👏 👏
Estaríamos confortáveis em dizer que o Storybook 6 não é compatível com o Angular 8 para que pudéssemos aproveitar o que há de melhor e mais recente que o TypeScript 3.7 tem a oferecer?
Para mim, é um pouco difícil tornar o SB 6 não compatível com Angular <9 porque o Angular 9 será lançado por apenas alguns dias. Muitos pacotes não estão prontos para esta nova versão, que para o novato do Angular é uma versão real principal que apresenta um novo pipeline de compilação e renderização, e portanto a migração para o Angular 9 não pode ser feita para algum grande projeto monorepo (como o que estou trabalhando no trabalho).
Como os aprimoramentos trazidos pelo TS 3.7 não são amplamente usados no SB monorepo, talvez possamos manter o TS 3.6 (então mesclar o PR em next
+ escolha certa em master
) até encontrarmos uma maneira de trabalhar em torno deste problema. Talvez um projeto para dar uma olhada em: https://github.com/sandersn/downlevel-dts permite gerar arquivos de definição antigos a partir de novos 🤷♂
@gaetanmaisse Você está muito mais em contato com o mundo TS / Angular, então, no final das contas, irei com seu julgamento sobre isso. No entanto, quero destacar algumas coisas:
1) A estimativa atual do SB6 é final de abril e, nessa altura, o NG9 terá alguns meses
2) Se esta for realmente uma alteração significativa e não a alterarmos agora, a próxima vez que poderemos alterá-la é 7.0, o que provavelmente levará um ano.
Claro, se conseguirmos consertá-lo com 3.6, então é ainda melhor! Dentro do Storybook seria ótimo começar a usar encadeamento opcional etc., embora eu suponha que isso seja relevante para a dependência de desenvolvimento e não para a dependência.
@shilman : concordo totalmente com você 💯 e estou bastante desapontado por ter que manter 3.6 até o SB7.
Como SB6 ainda está em alfa por semanas, acho que devemos dizer que nosso objetivo é ter TS 3.7+ no SB6 e encontrar uma forma de ainda ser compatível com Angular <= 8. E se não for possível, veja no final de março ou o início do Apris como o NG9 foi adotado e discutir sobre a retirada do suporte Angular <= 8.
@gaetanmaisse Estou brincando com um branch para utilizar downlevel-dts. A princípio, descartei porque não é uma parte mantida do TypeScript, mas depois de pensar um pouco, pode ser uma opção viável nos deixar usar o TS3.7 + e ainda ser compatível com usuários <= TS3.5. Dê-me um pouco para verificar as mudanças e então veremos se vale a pena a manutenção. Os scripts de construção são bem organizados, então isso não deve ser muito difícil.
@gaetanmaisse PR está
Obrigado pela oportunidade de contribuir!
Atualizar com
ng update --next @angular/cli --force
para9.0.0-rc.12
que usatypescript @ "3.7.5"
realmente ajudou a resolver o problema.
Isso também resolveu meu problema! Muito obrigado!
Ok, mas como resolver esse problema sem a atualização do texto digitado?
@ColCh estamos trabalhando nisso https://github.com/storybookjs/storybook/pull/9847 deve estar disponível em breve! 👏 👏 @lychyi
Obrigado! Esse PR parece resolver o problema.
Ok, pacientemente esperando por isso :) sem pressa
Uau, isso foi rápido!
Mas, @gaetanmaisse , podemos esperar que este commit seja portado para a versão v5? Isso seria legal
@ColCh Vai! Estamos testando se está tudo OK na última versão 6.0.0-alpha e então vamos lançar na versão 5.3.x 😉
Oh ok. Obrigada 🙂
Tenho a seguinte configuração e ainda estou recebendo o erro:
`"
@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 a correção do
Thx, eu entendi mal e pensei que tinha sido.
Qual é o seu ETA para o próximo lançamento?
Também existe uma maneira de usar uma versão mais antiga do Storybook para contornar o problema até que seja corrigido?
O Angular 9 não foi avaliado em minha empresa, então tenho que esperar um pouco antes de fazer o upgrade.
@ cnestor1 ETA nos próximos 5 dias
Resolvi esse erro temporariamente visitando o arquivo nodemodules (arquivo .d.ts) mencionado no erro e, em seguida, salvando-o com ctrl + s, isso resolverá o erro, pois seu código será compilado, mas o erro ainda estará lá
Filho da mãe!! Acabei de lançar https://github.com/storybookjs/storybook/releases/tag/v5.3.14 contendo PR # 9847 que faz referência a esse problema. Atualize hoje para experimentar!
Fechando esta questão. Abra novamente se achar que ainda há mais a fazer.
Obtendo o mesmo problema :)
@rohittagadiya você atualizou para o mais recente?
Tente " skipLibCheck": verdadeiro , dentro de tsconfig.json, por exemplo.
"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 ajude você !!
Tente " skipLibCheck": true , dentro do tsconfig.json, por exemplo.
"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 ajude você !!
Works!!!! Thanks
Tente " skipLibCheck": verdadeiro , dentro de tsconfig.json, por exemplo.
"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 ajude você !!
Funciona muito bem, obrigado <3
Adicionar "skipLibCheck": true no compilerOptions dentro do arquivo tsconfig.json funcionou para mim. Muito obrigado .
Chiming - skipLibCheck: true
funciona muito bem. Isso é ótimo para aqueles que não podem arriscar um ciclo de ng update
meio do controle de qualidade. Obrigado!
Tente " skipLibCheck": verdadeiro , dentro de tsconfig.json, por exemplo.
"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 ajude você !!
Obrigado. Trabalhando bem.
Tente " skipLibCheck": verdadeiro , dentro de tsconfig.json, por exemplo.
"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 ajude você !!
Obrigada <3
alterar a versão para:
"ngx-swiper-wrapper": "~ 8.0.1"
Pode resolver este problema
de atualização --next @ angular / cli --force
npm install typescript @ mais recente;)
Estou usando o angular 5, é possível usar o ngx-file-upload
update @ angular-devkit / build-angular
Comentários muito úteis
Tente " skipLibCheck": verdadeiro , dentro de tsconfig.json, por exemplo.
Espero que ajude você !!