Saat menjalankan modul Anda melalui kode yang diubah oleh webpack/babel, saya mendapatkan masalah berikut:
Module not found: Error: Can't resolve 'coffee-script' in '/node_modules/vm2/lib'
@ ./~/vm2/lib/main.js 19:10-34
@ ./~/vm2/index.js
@ ./lib/config.js
@ ./lib/server.js
https://github.com/patriksimek/vm2/blob/master/lib/main.js#L19
Di baris ini Anda menggunakan modul coffee-script
, tetapi tidak didefinisikan sebagai dependensi modul.
Jadi, ketika webpack mencoba memetakan semua kebutuhan, ia macet karena tidak dapat menemukan modul coffee-script
di mana pun.
UPD: ini bukan permintaan fitur, ini masalah dependensi modul vm2. Sampai modul ini memiliki baris ini, itu tidak akan berfungsi dengan opsi kompiler yang ditentukan sebagai coffee-script
pada lingkungan apa pun tanpa modul skrip kopi diinstal.
Terima kasih telah melaporkan masalah. Saya hampir tidak memiliki pengalaman dengan Webpack jadi mungkin saya salah, tetapi bagaimana jika Anda menambahkan coffee-script
sebagai ketergantungan pada proyek induk? Saya berasumsi proses Webpack memerlukan cara yang sama dengan Node - ia mencari semua folder node_modules
hingga ke root.
Saya tidak ingin menambahkan coffee-script
sebagai ketergantungan proyek saya sendiri hanya karena modul Anda memerlukannya. Saya tidak menggunakan coffee-script
.
Jika Anda menggunakan modul seseorang dalam proyek Anda sendiri, Anda harus mendeklarasikannya sebagai dependensi.
Juga jika seseorang akan menginstal modul Anda dan orang itu tidak akan menginstal modul coffee-script
di mana saja (dalam proyek atau global), itu juga akan memicu kesalahan itu. Itu tidak tergantung pada Webpack.
Ok saya pikir Anda menggunakan skrip kopi. Dalam hal ini, perpustakaan ini bukan atm yang kompatibel dengan webpack. Saya akan mencoba mencari tahu ini jika saya punya waktu luang.
Ini bukan kasus kompatibilitas dengan webpack.
Ini adalah kasus bagaimana Anda mempublikasikan dan memasok modul Anda ke npm.
Saya tidak setuju, perpustakaan ini berfungsi tanpa skrip kopi dengan benar sehingga tidak ada alasan untuk menautkannya sebagai ketergantungan yang diperlukan. Ini hanya digunakan ketika pengguna secara eksplisit menyatakan bahwa dia ingin menggunakan skrip kopi. Saya akan refactor ini ke beberapa jenis mekanisme plugin.
Alasannya adalah bahwa Anda secara eksplisit memerlukan coffee-script
dalam kode Anda, yang menganggap itu harus diinstal entah bagaimana.
Jika Anda sudah menginstal coffee-script
di mesin Anda – tidak apa-apa dan akan berfungsi, jika tidak maka akan menyebabkan masalah ketika saya tidak menginstal coffee-script
di mana pun dan meluncurkan vm dengan set opsi kompiler ke salah satu dari 'skrip kopi', 'skrip kopi', 'cs' atau 'teks/skrip kopi' (sebagaimana dinyatakan dalam https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).
Saya juga tidak setuju bahwa ini adalah feature request
karena modul Anda tidak bekerja dengan kompiler coffee-script
jika belum diinstal. Dan dokumentasi tidak mengatakan apa-apa tentang persyaratan coffee-script
untuk pra-instal.
Ya, Anda telah menjelaskan dengan tepat cara kerjanya sekarang. Pustaka mengharapkan pengguna untuk menginstal skrip kopi jika kompiler disetel ke kopi.
Anda benar tentang dokumen, ini diperbarui.
Ya, perbaikan dokumentasi tidak menyelesaikan masalah. Anda masih memiliki baris require('coffee-script')
dalam kode Anda, yang akan menghasilkan kesalahan, setidaknya untuk webpack.
Ya, dan seperti yang saya tulis di posting sebelumnya, saya akan refactor ini ke beberapa jenis mekanisme plugin sehingga akan kompatibel dengan webpack.
Sudahlah, jika sangat sulit bagi Anda untuk menjalankan satu perintah sederhana:
> npm install coffee-script --save
Saya tidak akan lagi menggunakan atau menunggu proyek Anda memperbaiki masalah.
@patriksimek Secara pribadi, saya melihat manfaat memiliki semacam mekanisme plugin.
Bagaimana dengan sesuatu yang sederhana seperti options.compiler
menjadi sebuah fungsi?
Kemudian pengguna yang membutuhkan CoffeeScript dapat mengatur options.compiler
menjadi (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); }
.
@dkfiresky Wow, Anda benar-benar mengharapkan saya untuk memaksa puluhan ribu pengguna mengunduh skrip kopi meskipun mereka tidak membutuhkannya hanya karena Anda tidak mau menunggu solusi yang tepat? Itu menyedihkan.
@n-riesco Sebenarnya ini sudah didukung. Masalahnya adalah bahwa menghentikan dukungan untuk opsi coffeescript
adalah perubahan yang melanggar dan saya ingin mencoba solusi yang lebih baik terlebih dahulu (jika ada).
@patriksimek Saya berharap Anda mengirimkan modul Anda dengan benar. Penggunaan kopi-script adalah tanggung jawab Anda sendiri. Jika Anda menggunakannya, Anda harus mendefinisikannya sebagai ketergantungan. Jika Anda tidak setuju, hapus pernyataan yang membutuhkan dan opsi kompiler yang menyatakan coffee-script
sebagai opsi.
Masalah ini dibuat karena modul Anda tidak berfungsi di luar kotak. Menunggu 18 hari bagi Anda untuk menjalankan perintah instal sederhana terdengar seperti lelucon.
Terlebih lagi jika Anda menyatakan bahwa modul Anda dikompilasi coffee-script
, Anda harus mengirimkan modul itu sebagai dependensi dalam package.json Anda .
Anda benar-benar mengharapkan saya untuk memaksa puluhan ribu pengguna mengunduh skrip kopi
Itu yang Anda lakukan dengan require('coffee-script')
dalam kode Anda . Anda mengharapkan saya untuk menginstal skrip kopi meskipun saya tidak menggunakannya.
Menunggu 18 hari bagi Anda untuk menjalankan perintah instal sederhana terdengar seperti lelucon.
Anda masih mengharapkan saya untuk melakukan apa yang saya katakan tidak akan pernah saya lakukan. Jadi sekali lagi - modul ini tidak kompatibel dengan Webpack saat ini, tolong, jangan gunakan perpustakaan ini.
@patriksimek modul ini tidak kompatibel atau tidak dapat dijalankan di lingkungan apa pun tanpa coffee-script
diinstal.
@dkfiresky Tentu, jika Anda berpikir begitu. Saya tidak lagi tertarik untuk meyakinkan Anda bahwa Anda salah. Bisakah kita menghentikan diskusi yang tidak berguna ini?
@patriksimek ya, tentu. Silakan baca beberapa dokumen npm.
Saya mendapatkan ini juga dalam proyek reaksi baru, sebelum saya menambahkan vm2 sebagai ketergantungan, saya tidak memiliki kesalahan tentang skrip kopi
Failed to compile.
/Users/mark/node_modules/coffee-script/lib/coffee-script/coffee-script.js
Module not found: Can't resolve 'module' in '/Users/mark/node_modules/coffee-script/lib/coffee-script'
Meskipun nada diskusinya tidak terlalu konstruktif, saya sangat yakin coffee-script
harus ditambahkan sebagai dependensi. Ini akan menjadi solusi yang sangat sederhana dan memungkinkan penggunaan paket ini di berbagai lingkungan (misalnya Webpack, Next, dll.).
Komentar yang paling membantu
@dkfiresky Wow, Anda benar-benar mengharapkan saya untuk memaksa puluhan ribu pengguna mengunduh skrip kopi meskipun mereka tidak membutuhkannya hanya karena Anda tidak mau menunggu solusi yang tepat? Itu menyedihkan.
@n-riesco Sebenarnya ini sudah didukung. Masalahnya adalah bahwa menghentikan dukungan untuk opsi
coffeescript
adalah perubahan yang melanggar dan saya ingin mencoba solusi yang lebih baik terlebih dahulu (jika ada).