2012-06-15 34 views
11

Bu birkaç gündür beni rahatsız ediyor. NUL aygıtına standart akış yönlendirmesini biliyorum, ancak durum böyle değil. node.js, fs native/libuv bağlamaları altında CreateFileW kullanıyor.Windows altında NUL cihazına node.js'den nasıl yazabilirim?

Maalesef böyle bir şey kullanarak:

require('fs').writeFileSync('NUL', 'foo') 

3 bayt olan CWD'sindeki içine bir boş dosya oluşturur.

\ Device \ Null'a yazmayı denedim, ancak her şeyin bir dosya olduğu neredeyse bir * nix baş olduğum için, aslında \ Device \ Null için bir çalışma yolu bulamadım. ENT ÇAKMAK \\. \ Device \ Null gibi.

Bunu Windows altında nasıl çalıştıracağınız hakkında bir fikrin var mı?

This ilgili gibi görünüyor, ancak yol argümanının bir tür göreli olarak görmediğini kontrol etmek için lib/fs.js'den uv/src/win/fs.c'ye tüm akışı izleyemiyorum. mutlak yol çözünürlüğü.

+1

Çalışacağından emin olun, ancak 'NUL:' seçeneğini deneyin. –

+0

Soruyu göndermeden önce denedim. Çalışmıyor. Bir çeşit erişim reddedildi hatası atar. Şu anda özellikleri sağlamak için bir Windows makinesi yok. – SaltwaterC

cevap

5

Geçerli yol cihazı NUL için "\\\\.\\NUL" değil NUL, bu nedenle kullanım şöyledir: fs.writeFileSync("\\\\.\\NUL", "foo"). Bu sorun GitHub'dan node.js karşı büyüdü: - Bu (diğer kesikler kaçan içindir) başlangıçta \\.\ koyarak gerektirir NUL yana https://github.com/nodejs/node-v0.x-archive/issues/9271

bir cihaz değil, bir dosya, bu cihaz ad üzerinden erişilebilir zorundadır - bkz. https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247.aspx#Win32_Device_Namespaces.

Ayrıca NPM'de https://www.npmjs.com/package/dev-null (.writeFile ile değil) akışlarıyla birlikte kullanılabilen basit bir dev-null kitaplığı vardır.

3

Kendiniz kod gibi uzun bir geçici çözüm var. Ancak buradan https://github.com/hanshuebner/node-hid/blob/master/src/HID.cc bir fikir alabilir ve C kütüphanesi üzerinden bir sarıcı yazabilirsiniz.

+0

NUL aygıtının (işletim sistemini algılayan ve buna göre davranan) bir sarmalayıcı yöntemini iletmek yerine, yalnızca argüman olarak geçilirse, herhangi bir veri/son olay dinleyicisini eklememek için kitaplığı yamalarım. Bu, işletim sisteminin verileri atmasına izin vermek yerine, işleri yapmanın daha kolay yoludur. – SaltwaterC

+0

Bir çalışma çözümü bulduğuna sevindim. Kodunuzu toplulukla paylaşabilir misiniz? :) –

+0

Bu [http-get] 'in bir parçasıdır (https://github.com/SaltwaterC/http-get). – SaltwaterC

İlgili konular