If you develop on Windows, it is very easy to accidentally do:

var Q = require("Q");

for the package named "q". Similarly for modules, one could do:

var x = require("./LiB/UtiL/X");

for the module which is checked in to source control as "lib/util/x" (and 
appears in Windows explorer lowercased as well).

The problem is, both of these work on Windows, since in Windows filenames 
are case-insensitive. But when sharing code across platforms, your code 
will break everywhere else. I don't know how many people develop on Windows 
and then push to *nix hosting (e.g. Heroku or Nodejitsu), but it's probably 
significant.

This is a moderately hard problem to debug, as you have to SSH into your 
*nix box and run your program to find out why the server's suddenly down by 
running your program manually. Or in the library case, you have to wait for 
someone to use your library on *nix, AND be nice enough to not give up in 
disgust when they get "cannot find module 'Q'".

----

I think the best solution would be to make module names case-sensitive on 
Windows. I know it's a change to the module system, but this problem has 
bit us several times.

Reply via email to