Sebelum Anda bertanya: Ya, saya mencari - dan menemukan #6334 - meskipun ini tidak mengatasi masalah saya.
Saya sedang menulis aplikasi web yang menggunakan Webpack. Akibatnya, saya membutuhkan akses ke webpack-env.d.ts
di front end, tetapi saya juga tertarik untuk menggunakan modul url
dari Node (untuk url.parse
). Jika saya memerlukan webpack-env.d.ts
dan node.d.ts
dalam file referensi yang sama, dapat diduga itu rusak karena Node mendefinisikan ulang require
. IOW, saya perlu akses ke node.d.ts
url
modul require
definisi
Saya bisa menyiasatinya dengan menggunakan const url: any = require('url')
, meskipun ini tidak ideal dan saya ingin mengetik untuk modul ini. Pilihan lain adalah membagi node.d.ts
menjadi modul penyusunnya dan meminta master node.d.ts
memerlukan setiap modul individual, meskipun saya tidak yakin apakah ini akan merusak apa pun dari banyak orang yang mengandalkan ini File deklarasi TypeScript - dan saya tidak ingin meretasnya bersama-sama secara lokal.
Ada saran?
Nah, secara teknis Anda masih belum berada di lingkungan node dan tidak benar untuk memasukkan seluruh file node.d.ts. Anda menggunakan paket npm yang bertindak sama dengan "url" node, tetapi di lingkungan browser. Apa yang dapat Anda lakukan adalah mengekstrak pengetikan tersebut dari node.d.ts dan memiliki url.d.ts terpisah, seperti yang telah Anda sarankan. Memisahkan node.d.ts menjadi modul yang lebih kecil mungkin tidak sesuai dengan setiap kebutuhan, karena tanda tangan mungkin berbeda karena perbedaan lingkungan (Buffer vs Array) atau implementasi. Saya akan menyarankan pengetikan independen untuk paket "url" ini.
Saya mengalami masalah yang sama di mana saya menggunakan include typings/index.ts
di tsconfig.json
untuk memasukkan semua pengetikan. Saat menambahkan webpack-env.d.ts
dan node
, compiler TypeScript jelas mengeluh. Apakah ada cara untuk mengatasi ini?
test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.
Cara saya "memecahkannya" adalah dengan membuat file pengetikan terpisah untuk modul khusus simpul yang ingin saya gunakan. Sedikit hack, sayangnya.
Saya akhirnya menghapus webpack-env sama sekali karena saya hanya perlu satu mengetik di seluruh proyek saya untuk itu. Semoga tetap seperti itu. Saya mencoba solusi Anda tetapi saya benar-benar tidak suka mencemari file saya dengan referensi sebanyak mungkin. Terima kasih balasannya
Saurabh Sharma / Rekayasa Kualitas
[email protected] / (925)-878-5722
Yammer, Microsoft
http://www.foklepoint.com
Pada 14 Agustus 2016, pukul 07:08, Dan [email protected] menulis:
Cara saya "memecahkannya" adalah dengan membuat file pengetikan terpisah untuk modul khusus simpul yang ingin saya gunakan. Sedikit hack, sayangnya.
—
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub, atau matikan utasnya.
Tentu, saya juga tidak :( Tapi sayangnya saya membutuhkan modul itu. @foklepoint
tetapi bagaimana jika @types/node
adalah ketergantungan dari ketergantungan lain (misalnya fs-extra
, jsdom
, shelljs
, tape
)?
juga akhirnya menghapus webpack-env
dan
if ((module as any).hot) {
...
😢
Komentar yang paling membantu
tetapi bagaimana jika
@types/node
adalah ketergantungan dari ketergantungan lain (misalnyafs-extra
,jsdom
,shelljs
,tape
)?juga akhirnya menghapus
webpack-env
dan😢