How can I write to the NUL device under Windows from node.js?

device, node.js, nul, null, windows

Solution

Valid path to `NUL` device is `"\\\\.\\NUL"`, not `NUL`, so the usage is: `fs.writeFileSync("\\\\.\\NUL", "foo")`. This issue was raised against Node.js on GitHub: https://github.com/nodejs/node-v0.x-archive/issues/9271

Since `NUL` is a device, not a file, it has to be accessed via device namespace - this requires putting `\\.\` in the beginning (the other slashes are for escaping) - see https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247.aspx#Win32_Device_Namespaces.

There is also a simple `dev-null` library on NPM that can be used with streams: https://www.npmjs.com/package/dev-null (not with `.writeFile` though).

Problem

This is bugging me for several days now. I know about the standard stream redirection to the NUL device, but this isn't the case. node.js uses CreateFileW under its fs native/libuv bindings. Unfortunately using something like: ``` require('fs').writeFileSync('NUL', 'foo') ``` creates a NUL file into the cwd that has 3 bytes. I tried writing to the \Device\Null, but since I'm pretty much a *nix head where everything is a file, I failed to actually find a working path for \Device\Null. Such as \\.\Device\Null that throws ENOENT. Any ideas about how to make this work under Windows? This seems to be related, but I can not track the whole flow from lib/fs.js to uv/src/win/fs.c to check that the path argument doesn't suffer from some kind of relative to absolute path resolution.

Original source

Related problems