Storybook: TS1086: Accessor tidak dapat dideklarasikan dalam konteks ambient

Dibuat pada 15 Jan 2020  ·  55Komentar  ·  Sumber: storybookjs/storybook

Jelaskan bugnya
Baru saja ditingkatkan ke 5.3.3 dan build Angular kami gagal dengan yang berikut:

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

Dari Google cepat, tampaknya repo lain menghadapi masalah yang sama karena penggunaan TypeScript 3.7.0 - tetapi Angular dibatasi hingga <3.5.0

Kesalahan serupa
https://github.com/nestjs/nest/issues/3513
https://github.com/googleapis/node-gtoken/issues/244

Saya percaya perubahan yang merusak datang dari TypeScript secara langsung https://github.com/microsoft/TypeScript/issues/33939 - tetapi sampai perbaikan dirilis, file index.d.ts perlu dibuat ulang dengan npm i typescript@~3.6.0 (tukar ^ untuk ~ )

Sistem:

    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

Komentar yang paling membantu

Coba " skipLibCheck": true , di dalam tsconfig.json mis.

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

Semoga ini akan membantu Anda !!

Semua 55 komentar

Saya sempat melakukan peningkatan tetapi tersesat dalam struktur paket 😅 - Hasil akhirnya (setelah file dist dibuat) harus menghasilkan @storybook/channels/dist/index.d.ts:25 pergi

Dari

get hasTransport(): boolean;

Untuk

readonly hasTransport: boolean;

Saya memiliki masalah yang sama. Saya menyelesaikannya dengan memperbarui paket Ketikan ke versi terbaru

Saya memiliki masalah yang sama. Saya menyelesaikannya dengan memperbarui paket Ketikan ke versi terbaru

@siropo Versi apa? Saya menggunakan angular 8.3.20 dan ketikan 3.5.3. Dan saya mendapat kesalahan yang sama ketika mencoba membangun proyek.

@IsharaMadawa "ketikan": "3.7.4"

@IsharaMadawa "ketikan": "3.7.4"

@siropo Bisakah Anda

@Isharaadawa kenapa? Coba saja perbarui versi ketikan Anda dan periksa apakah itu berfungsi

Jika Anda menjalankan Angular versi lama, misalnya 8.1.0 Anda akan melihat kesalahan berikut

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

Jika Anda menjalankan Angular versi lama, misalnya 8.1.0 Anda akan melihat kesalahan berikut

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

Iya. Saya mendapat kesalahan ini dan harus memperbarui sudut juga

@IsharaMadawa Apakah Anda meningkatkan ke versi 9 rc angular?
Saya melihat kesalahan di bawah ini
The Angular Compiler requires TypeScript >=3.4.0 and <3.5.0 but 3.x.y was found instead.
dalam sudut 8.2.3 juga

Ini juga menghentikan kami menggunakan versi terbaru Angular 8.2.x: /

image

Saya memiliki Typecript versi 3.7.4 dan Angular versi 8.3.21 dan saya mendapatkan pesan yang sama! Tolong bantu! :-)

Memperbarui dengan ng update --next @angular/cli --force menjadi 9.0.0-rc.12 yang menggunakan typescript @ "3.7.5" , memang telah membantu masalah tersebut.

Mendapatkan masalah yang sama ini dengan typescript 3.7.5 dan storybook/react 5.3.9

pembaruan --next @ angular / cli --force
npm instal skrip ketikan @ terbaru

;)

ng update - berikutnya @ angular / cli --force
npm instal skrip ketikan @ terbaru

;)
Berhasil, Terima kasih Snargol.

Dikonfirmasi, memutakhirkan ke Angular 9 (dan dengan ekstensi Skrip Ketik 3.7.5), masalah ini teratasi

Mengupgrade ke TypeScript 3.7.x bukanlah pilihan yang bagus untuk pengelola perpustakaan. Ini berarti bahwa perubahan dari 3,6 ke 3,7 (secara teknis merupakan perubahan besar) diturunkan ke konsumen kami dan kami tidak dapat berasumsi bahwa mereka juga dapat dengan mudah memutakhirkan TypeScript.

@ndelangen Saya pikir ini dapat diperbaiki dengan mengubah https://github.com/storybookjs/storybook/blob/next/package.json#L218 menjadi typescript@~3.6.0 , karena typescript@^3.4.0 menjadi 3.7.5 sekarang. Kemudian kita dapat menyimpan upgrade 3.7 hingga Storybook 6.0 karena ini sebenarnya merupakan perubahan yang melanggar.

Bagaimana menurut anda?

Kedengarannya seperti rencana @lychyi

Ingin membuka PR terhadap cabang next ?

Kami akan memilihnya menjadi master dan merilisnya sebagai tambalan @shilman

Benar!

@ndelangen @shilman

Haruskah Storybook 6 menggunakan TypeScript 3.7 karena itu akan ditawarkan sebagai perubahan besar? Jika demikian, saya pikir ini seharusnya diubah di master dan bukan next . PR # 9826 saat ini melawan next tetapi saya dapat mengulanginya untuk menunjuk ke master sebagai gantinya, beri tahu saya.

Akibatnya, jika TS 3.7+ tidak terlalu penting, itu bisa ditingkatkan sebagai bagian dari Buku Cerita 7 atau lebih?

bekerja untuk saya @lychyi. terima kasih banyak telah mengurus ini & memikirkannya !!! 💯

re: 3.7 di buku cerita 6.0. Saya tidak yakin apakah 3.7 diperlukan, akan membiarkan salah satu juru ketik berbicara dengan @ndelangen @kroeder @gaetanmaisse itu

FWIW, next sudah menggunakan 3.7, yang menurut kelebihannya, memiliki fitur yang sangat rapi seperti opsional chaining ( foo?.bar ) dan operator penggabungan nullish ( foo ?? bar ). Mengubah ini hanya di master untuk Storybook 5.3.x akan menjadi hal yang paling tidak mengganggu kondisi saat ini.

Juga, saya baru saja mengetahui bahwa getter / setter emit hanya merupakan perubahan besar untuk "typescript": "<=3.5" . TS 3.6 membuktikan fitur ini di masa mendatang sehingga opsi lainnya adalah meminta orang meningkatkan ke TS3.6 jika mereka tidak dapat meningkatkan ke TS3.7 karena alasan apa pun. Memutus perubahan di TS3.6 tidak terlalu buruk.

Namun, menggunakan TS3.7 masih merugikan orang-orang Angular yang belum dapat meningkatkan ke 9.x. Angular 8.x dikunci pada ~3.5.3 .

Jadi pengorbanan utama yang saya sarankan untuk dipertimbangkan adalah: _ "Apakah kita akan merasa nyaman mengatakan bahwa Storybook 6 tidak kompatibel dengan Angular 8 sehingga kita dapat memanfaatkan yang terbaru dan terhebat yang ditawarkan TypeScript 3.7?" _

@lychyi Ringkasan yang bagus. Perasaan usus yang kurang informasi mengatakan pasti 3,7 untuk 6.0. Rebut masa depan !! 😈

@lychyi Terima kasih atas kerja

Akankah kita nyaman mengatakan bahwa Storybook 6 tidak kompatibel dengan Angular 8 sehingga kita dapat memanfaatkan yang terbaru dan terhebat yang ditawarkan TypeScript 3.7?

Bagi saya, agak kasar membuat SB 6 tidak kompatibel dengan Angular <9 karena Angular 9 hanya keluar beberapa hari. Banyak paket belum siap untuk versi baru ini, yang bagi pemula Angular adalah versi mayor yang nyata yang memperkenalkan kompilasi dan pipeline rendering baru, sehingga migrasi ke Angular 9 tidak dapat dilakukan untuk beberapa proyek monorepo besar (seperti yang saya kerjakan sedang bekerja).

Karena perangkat tambahan yang dibawa oleh TS 3.7 saat ini tidak banyak digunakan di SB monorepo, kita mungkin dapat menyimpan TS 3.6 (jadi gabungkan PR di next + cherry pick pada master ) sampai kita menemukan cara untuk bekerja seputar masalah ini. Mungkin proyek untuk dilihat: https://github.com/sandersn/downlevel-dts memungkinkan pembuatan file definisi lama berdasarkan yang baru 🤷‍♂

@gaetanmaisse Anda jauh lebih berhubungan dengan dunia TS / Angular, jadi pada akhirnya saya akan mengikuti penilaian Anda tentang ini. Namun, saya ingin menunjukkan beberapa hal:
1) Estimasi saat ini pada SB6 adalah akhir April dan pada saat itu NG9 akan berumur beberapa bulan
2) Jika ini memang merupakan perubahan yang merusak dan kami tidak mengubahnya sekarang, waktu berikutnya kami dapat mengubahnya adalah 7.0, yang kemungkinan akan menjadi satu tahun libur.

Tentu saja, jika kita bisa memperbaikinya dengan 3,6 maka itu lebih baik! Di dalam Storybook, akan sangat bagus untuk mulai menggunakan rangkaian opsional dll., Yang menurut saya itu relevan dengan ketergantungan dev dan bukan ketergantungan.

@shilman Saya sangat setuju dengan Anda 💯 dan saya cukup kecewa harus menyimpan 3,6 hingga SB7.

Karena SB6 masih dalam alpha selama berminggu-minggu, saya pikir kami harus mengatakan bahwa tujuan kami adalah memiliki TS 3.7+ di SB6 dan menemukan cara agar tetap kompatibel dengan Angular <= 8. Dan jika tidak memungkinkan, lihat di akhir Maret atau awal Apris bagaimana NG9 telah diadopsi dan membahas tentang menjatuhkan dukungan dari dukungan Angular <= 8.

@gaetanmaisse Saya bermain-main dengan cabang untuk memanfaatkan downlevel-dts. Pada awalnya saya menolaknya karena ini bukan bagian dari TypeScript yang dipelihara tetapi setelah memikirkannya sedikit, ini bisa menjadi opsi yang layak untuk membiarkan kami menggunakan TS3.7 + dan masih kompatibel dengan pengguna <= TS3.5. Beri saya sedikit untuk memverifikasi perubahan dan kemudian kita dapat melihat apakah itu sepadan dengan pemeliharaan. Skrip build cukup rapi jadi ini seharusnya tidak terlalu sulit.

@gaetanmaisse PR sudah habis, beri tahu saya jika Anda memiliki pertanyaan.

Terima kasih atas kesempatan untuk berkontribusi!

Memperbarui dengan ng update --next @angular/cli --force menjadi 9.0.0-rc.12 yang menggunakan typescript @ "3.7.5" , memang telah membantu masalah tersebut.

Ini juga memecahkan masalah saya! Terima kasih banyak!

Ok tapi bagaimana cara mengatasi masalah ini tanpa pembaruan skrip?

@ColCh kami sedang mengerjakannya https://github.com/storybookjs/storybook/pull/9847 itu akan segera tersedia! 👏 👏 @lychyi

Terima kasih! Humas itu sepertinya memperbaiki masalah.

Ok sabar menunggu :) tidak usah terburu-buru

Wow, cepat sekali!

Tapi, @gaetanmaisse , bolehkah kami berharap komitmen ini di-backport ke versi v5? Itu akan menyenangkan

@ColCh Itu akan! Kami sedang menguji bahwa semuanya baik-baik saja di 6.0.0-alpha terbaru dan kemudian kami akan merilisnya dalam versi 5.3.x 😉

Oh baiklah. Terima kasih 🙂

Saya memiliki konfigurasi berikut dan saya masih mendapatkan kesalahan:

""

 @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 perbaikan bug belum dirilis di 5.3.x, itu harus di yang berikutnya 😉

Terima kasih, saya salah paham dan mengira begitu.
Apa ETA Anda untuk rilis berikutnya?
Adakah cara untuk menggunakan Storybook versi lama untuk menghindari masalah hingga masalah tersebut diperbaiki?
Angular 9 belum diperiksa di perusahaan saya, jadi saya harus menunggu sebentar sebelum dapat meningkatkan.

@ cnestor1 ETA dalam 5 hari ke depan

Saya menyelesaikan kesalahan ini untuk sementara waktu dengan mengunjungi file nodemodules (file .d.ts) yang disebutkan dalam kesalahan dan kemudian menyimpannya dengan ctrl + s ini akan menyelesaikan kesalahan karena kode Anda akan dikompilasi tetapi kesalahan masih ada

Brengsek !! Saya baru saja merilis https://github.com/storybookjs/storybook/releases/tag/v5.3.14 berisi PR # 9847 yang mereferensikan masalah ini. Tingkatkan versi hari ini untuk mencobanya!

Menutup masalah ini. Harap buka kembali jika menurut Anda masih banyak yang harus dilakukan.

Mendapatkan masalah yang sama :)

@rohittagadiya apakah Anda memperbarui ke yang terbaru?

Coba " skipLibCheck": true , di dalam tsconfig.json mis.

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

Semoga ini akan membantu Anda !!

Coba " skipLibCheck": true , dalam tsconfig.json, misalnya.

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

Saya harap ini membantu Anda !!

Bekerja !!!! Terima kasih

Coba " skipLibCheck": true , di dalam tsconfig.json mis.

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

Semoga ini akan membantu Anda !!

Bekerja dengan baik, Terima kasih <3

Menambahkan "skipLibCheck": true, di compilerOptions di dalam file tsconfig.json berhasil untuk saya. Terima kasih banyak .

Menimpali - skipLibCheck: true bekerja dengan sangat baik. Ini bagus untuk mereka yang tidak bisa mengambil risiko siklus pertengahan QA ng update . Terima kasih!

Coba " skipLibCheck": true , di dalam tsconfig.json mis.

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

Semoga ini akan membantu Anda !!

Terima kasih. Bekerja dengan baik.

Coba " skipLibCheck": true , di dalam tsconfig.json mis.

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

Semoga ini akan membantu Anda !!

Terima kasih <3

ubah versi menjadi:
"ngx-swiper-wrapper": "~ 8.0.1"

Bisa mengatasi masalah ini

pembaruan --next @ angular / cli --force
npm instal skrip ketikan @ terbaru

;)

Saya menggunakan angular 5 apakah mungkin menggunakan ngx-file-upload
errr

perbarui @ angular-devkit / build-angular

Apakah halaman ini membantu?
0 / 5 - 0 peringkat