Less.js: Rusak pada simpul v6.0.0

Dibuat pada 27 Apr 2016  ·  41Komentar  ·  Sumber: less/less.js

Berlari

lessc main.less build.css

tidak akan menampilkan kesalahan apa pun dan tidak ada file build.

Menjalankan dengan nodemon menghasilkan lebih banyak info:

› nodemon -e less --exec 'lessc src/main.less build.css'
(node) v8::ObjectTemplate::Set() with non-primitive values is deprecated
(node) and will stop working in the next major release.

==== JS stack trace =========================================

Security context: 0x36610d2c9fa9 <JS Object>#0#
    1: .node [module.js:568] [pc=0x1aa0081d0f64] (this=0x225da61d89b9 <an Object with map 0x7af7e117be1>#1#,module=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_modules/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node>)
    2: load [module.js:456] [pc=0x1aa008138e72] (this=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_modules/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node>)
    3: tryModuleLoad(aka tryModuleLoad) [module.js:415] [pc=0x1aa00813899d] (this=0x36610d204189 <undefined>,module=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_mo 1: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)
 2: fse::FSEvents::Initialize(v8::Local<v8::Object>)
 3: node::DLOpen(v8::FunctionCallbackInfo<v8::Value> const&)
 4: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&))
 5: v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>)
 6: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*)
 7: 0x1aa00800961b
 8: 0x1aa0081d0f64
(node) v8::ObjectTemplate::Set() with non-primitive values is deprecated
(node) and will stop working in the next major release.

==== JS stack trace =========================================

Security context: 0x36610d2c9fa9 <JS Object>#0#
    1: .node [module.js:568] [pc=0x1aa0081d0f64] (this=0x225da61d89b9 <an Object with map 0x7af7e117be1>#1#,module=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_modules/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node>)
    2: load [module.js:456] [pc=0x1aa008138e72] (this=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_modules/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node>)
    3: tryModuleLoad(aka tryModuleLoad) [module.js:415] [pc=0x1aa00813899d] (this=0x36610d204189 <undefined>,module=0x2666c00042f1 <a Module with map 0x7af7e1181b9>#2#,filename=0x2666c0004251 <String[136]: /Users/zigomir/.nvm/versions/node/v6.0.0/lib/node_modules/nodemon/node_mo 1: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)
 2: fse::FSEvents::Initialize(v8::Local<v8::Object>)
 3: node::DLOpen(v8::FunctionCallbackInfo<v8::Value> const&)
 4: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&))
 5: v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>)
 6: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*)
 7: 0x1aa00800961b
 8: 0x1aa0081d0f64
needs decision needs info

Komentar yang paling membantu

Melihat sama. Menjalankan lessc pada file .less sepele apa pun tidak menghasilkan file build dan tidak ada kesalahan di bawah Node.js v6, bahkan dalam mode verbose.

Semua 41 komentar

Less sendiri tidak menggunakan fungsi ObjectTemplate.Set , jadi ini mungkin salah satu dependensinya. Ada rantai panjang pembaruan ketergantungan di master saat ini sehingga sulit untuk mengatakan betapa sulitnya untuk mendapatkan v6 -rilis yang kompatibel. Jangan ragu untuk menyelidikinya sendiri lebih dalam dan menyarankan patch/PR.

Itu sepertinya masalah dengan nodemon, tidak kurang

Melihat sama. Menjalankan lessc pada file .less sepele apa pun tidak menghasilkan file build dan tidak ada kesalahan di bawah Node.js v6, bahkan dalam mode verbose.

Saya telah menemukan penyebabnya:

Versi Less yang diterbitkan saat ini memanggil path.dirname() dengan undefined yang memunculkan kesalahan dengan node v6. Ini telah ditangani oleh ec04a03f1cba3a092d5cd7f7c5d8e28bb43c1932 tetapi belum dipublikasikan. Kesalahan tidak dibuang karena implementasi lessc saat ini menelan semua kesalahan yang disebabkan oleh Less itu sendiri. Saya telah membuat PR untuk memperbaikinya.

Jadi, emm, yang mana yang harus digabungkan? #2882 atau #2884? :)

Mereka memperbaiki dua masalah berbeda IMO

Jadi keduanya? (Saya bertanya karena mereka agak tumpang tindih dan menggabungkan keduanya akan membutuhkan beberapa pengeditan tambahan).

yang lain menggunakan process.exit() secara langsung, yang harus dihindari untuk mencegah tidak membilas stdout/stderr

@evanlucas Bisakah Anda menjelaskan bagaimana masalah dengan pemanggilan process.exit() ini secara langsung dapat direproduksi? Saya sangat setuju dengan Anda bahwa process.exit() harus digunakan dalam kasus yang jarang terjadi karena biasanya lebih baik untuk menghentikannya secara teratur atau dengan membuat kesalahan. Namun, dalam kasus ini, saya pikir process.exit() dengan kode kesalahan lebih tepat, karena kami tidak ingin menampilkan jejak tumpukan untuk kesalahan yang diharapkan. Dan juga tampak aneh bagi saya untuk melanjutkan eksekusi tetapi mencegah pemrosesan lebih lanjut dengan flag (seperti yang saat ini diterapkan).

pengaturan process.exitCode tidak menunjukkan jejak tumpukan. process.exit() sebenarnya tidak menyiram process.stdout atau process.stderr (dan keduanya tidak memblokir). Anda hanya perlu menyebutnya secara eksplisit dalam kasus yang jarang terjadi. Jika tidak, tutup semua pegangan Anda dan loop acara akan menutup dengan sendirinya, yang akan menyebabkan proses keluar.

Terkait: https://github.com/nodejs/node/issues/6409

Thx untuk mengklarifikasi ini. Saya tidak tahu bahwa process.exit() tidak memblokir. Saya akan memperbarui PR saya secepatnya.

Satu hal meskipun: Jika process.exit() tidak flush process.stdout – mengapa ada output di konsol saya? :menyeringai:

Dimungkinkan untuk sudah memerah pada saat aliran ditutup. Hanya saja itu bukan jaminan. Itulah mengapa terkadang ada keluaran (sebagian) di konsol.

Dikonfirmasi bahwa, setidaknya bagi kami, berjalan di kepala (yang mencakup https://github.com/less/less.js/commit/ec04a03f1cba3a092d5cd7f7c5d8e28bb43c1932 ), ini diselesaikan.

Menggunakan "--source-map" masih menghasilkan file css kosong untuk saya .. (jika tidak berfungsi untuk saya). node.js v6.0.0 pada windows 8 64-bit.

@ewebdev ya, saya bisa mengkonfirmasi ini. Dengan #2891, ia melempar:

lessc --source-map-map-inline styles/main.less
path.js:7
    throw new TypeError('Path must be a string. Received ' + inspect(path));
    ^

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at /Users/jhnns/dev/jhnns/less.js/bin/lessc:292:61
    at Object.<anonymous> (/Users/jhnns/dev/jhnns/less.js/bin/lessc:486:3)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)
    at Function.Module.runMain (module.js:575:10)

Saya boleh saja membuka PR yang memperbaikinya, tetapi saya tidak yakin opsi peta sumber apa yang didukung dalam situasi apa, misalnya ketika outputnya process.stdout . Kode ini agak rumit dan mungkin memerlukan beberapa refactoring...

Konfirmasikan, ini putus dengan simpul 6. Tidak ada kesalahan yang dihasilkan :(

Apakah kita masih menunggu PR untuk memperbaikinya?

AFAICT, ini sudah diperbaiki, jadi menunggu paket npm diterbitkan..

(Yang lain harus mengonfirmasi.)

@lmeyerov Saya tidak melihatnya di komit. Dan PR #2882 atau #2884 terhubung, tetapi tidak ada yang mengatakan bahwa itu adalah perbaikan untuk Node 6. Jadi, setahu saya, PR belum ada meskipun @jhnns menemukan penyebabnya? Atau, apakah salah satu dari PR tersebut memperbaiki kompatibilitas Node 6 tetapi memperkenalkan bug lain (peta sumber) yang belum diperbaiki? Bisakah seseorang mengklarifikasi ini?

@matthew-dean Untuk masalah yang kami hadapi yang muncul sebagai lessc tidak memancarkan apa pun, saya _think_ itu diselesaikan. https://github.com/less/less.js/commit/ec04a03f1cba3a092d5cd7f7c5d8e28bb43c1932 . Sesuatu antara versi yang saat ini diterbitkan di npm dan jalur utama 22 April menyelesaikannya untuk kami.

@matthew-dean using ec04a03f1cba3a092d5cd7f7c5d8e28bb43c193 berfungsi untuk saya (saya melihatnya di suatu tempat di sekitar sini).

@lmeyerov @matthew-dean _source map_ masih boken untuk saya, baik di kepala dan di https://github.com/less/less.js/commit/ec04a03f1cba3a092d5cd7f7c5d8e28bb43c1932 =/

Btw, bahkan tanpa perbaikan bug pelaporan kesalahan, seharusnya tidak ada yang menentang merilis versi yang berisi patch ec04a03 saya, sehingga lessc setidaknya berfungsi pada Node.js v6 seperti sebelumnya.

@addaleax Kurang 2.7.0 dirilis (baru saja). Bug mana yang masih luar biasa? Saya harus menambahkan itu sebagai "bug yang diketahui" ke rilis ini.

Itulah satu-satunya yang _I_ temui, ditambah "bug" karena tidak memiliki keluaran kesalahan nyata jika terjadi kegagalan. Tidak dapat berbicara untuk orang lain, meskipun.

Untuk beberapa alasan, peta sumber lulus semua tes Kurang, tetapi setelah memutakhirkan, saya juga mendapatkan kesalahan peta sumber, dan tidak di lingkungan Node 6.0. (Terjadi di Node 4.) Jadi ada beberapa perubahan yang baru saja merusak peta sumber.

Saya percaya PR #2834 memperkenalkan bug peta sumber. Mengembalikan komit 470af20 pada sistem saya memperbaiki masalah peta sumber saya. Bisakah seseorang (@ewebdev) mengonfirmasi dengan cepat? Jika demikian, saya akan melakukan pengembalian dan mengeluarkan perbaikan terbaru 2.7.1.

//cc @nicks

@matthew-dean Mengembalikan komit https://github.com/less/less.js/commit/470af20f641c9b5389475733dfe341aa4c180fba tidak menyelesaikan masalah peta sumber di env saya.

@matthew-dean maaf! ini hanya pengoptimalan kinerja, silakan kembalikan jika menyebabkan masalah dan kami dapat mencoba lagi nanti

Banyak bingungnya... 😁

Karena saya sudah meluangkan waktu untuk menyelidikinya, izinkan saya mengklarifikasinya:

  • ec04a03f1cba3a092d5cd7f7c5d8e28bb43c1932 memperbaiki bug di bin/lessc di mana jalur yang tidak ditentukan diteruskan ke dirname . Ini sekarang telah diterbitkan, semuanya baik-baik saja 👍
  • Masih ada bug di bin/lessc , di mana jalur yang tidak ditentukan diteruskan ke basename . Jalankan saja lessc --source-map-map-inline some-file.less dan less tidak akan mengeluarkan apa pun ke stdout. Belum ada PR untuk bug ini. Saya sudah mencoba untuk memperbaikinya, tetapi karena tidak ada tes untuk lessc dan ada begitu banyak pilihan yang berbeda, saya tidak cukup percaya diri untuk tidak merusak apa pun...
  • Kedua bug tidak dilaporkan ke pengguna (misalnya seperti menyajikan jejak tumpukan atau kode keluar bukan nol). Ini diperbaiki oleh PR saya yang masih tertunda.

@jhnns Oh, keren, saya tidak melihat peta sumber itu.

Jika tidak ada yang lain, seseorang dapat _mengembalikan_ perilaku Node v5 lama dengan mengubah path.basename(output) menjadi path.basename(output || 'undefined'); … Saya kira seluruh blok di sana dapat dilewati untuk output === undefined .

@jhnns Apa efek dari bug di bin/lessc . Apakah ini bug kritis? Apakah Less masih lengkap? Apa hasilnya? Bisakah Anda mengajukan masalah khusus untuk bug ini dengan detail lebih lanjut?

Saya menggabungkan PR Anda untuk pelaporan kesalahan.

@matthew-dean Lihat https://github.com/less/less.js/issues/2896

[sunting: Tidak apa-apa, terima kasih @matthew-dean]

@ewebdev Jika Anda masih mengalami masalah pada Less 2.7.1, dapatkah Anda mengajukan masalah terpisah dengan detail lebih lanjut?

@claar Itu adalah masalah terpisah (yang pertama di daftar @jhnns ), yang telah ditangani. Item kedua adalah bug terpisah, dan @ewebdev adalah bug terpisah. Mereka perlu dipisahkan dari masalah ini untuk kejelasan.

@nicks Itu terjadi. Anda tidak akan menjadi yang pertama. Jika Anda dapat membantu kami menambahkan pengujian sehingga kami dapat mendeteksi peta sumber yang tidak berfungsi di masa mendatang, itu akan sangat kami hargai.

Btw, sebagai FYI umum, dukungan pengembang Less sedikit saat ini (salah satu kontributor utama kami harus mundur karena tanggung jawab keluarga), jadi kami pasti akan menyambut pengembang Less untuk terlibat di tingkat organisasi. Anda dapat menghubungi saya secara terpisah jika Anda memiliki pertanyaan.

Saya telah membuat masalah terpisah. Karena masalah asli telah diselesaikan, kami dapat menutup yang ini.

@jhnns Kedengarannya bagus. Terima kasih telah menindaklanjuti.

Masih rusak pada node v6.9.2 LTS.
Tidak ada yang terjadi saat menjalankan lessc

Apakah halaman ini membantu?
0 / 5 - 0 peringkat