tilemill-project / tilemill

TileMill is a modern map design studio
https://tilemill-project.github.io/tilemill/
BSD 3-Clause "New" or "Revised" License
3.11k stars 527 forks source link

TypeError: Bad argument at mkdir #333

Closed arturogf closed 13 years ago

arturogf commented 13 years ago

Starting tilemill development git: ... Creating files dir /Applications/tilemill/files Creating mapfile dir /Applications/tilemill/files/.cache Creating export dir /Applications/tilemill/files/export Started TileMill on port 8889.

I'm able to create a test project,... go into it, but after some clicks it dumps this message and the server stops running:

unzipping file

fs:282 binding.mkdir(path, mode, callback || noop); ^ TypeError: Bad argument at Object.mkdir (fs:282:11) at /Applications/tilemill/lib/node/carto/external.js:179:20 at /Applications/tilemill/lib/node/carto/external.js:175:21 at path:81:19 at node.js:773:9

tmcw commented 13 years ago

Haven't been able to replicate this yet. 'After some clicks' - you mean adding layers? Or something else?

brianboyer commented 13 years ago

I just cloned and get this exact problem on my first time opening TileMill in the browser.

UPDATE: I copied the files directory from an older version of TileMill and things seem to be working.

tmcw commented 13 years ago

Fixed & updated carto - rm -rf modules/carto and ./ndistro and you should be set.

arturogf commented 13 years ago

Now there is another TypeError, maybe related, it is happening when trying to see a new created project (i.e. try to view the data associated to world layer):

Started TileMill on port 8889. unzipping file DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.dbf DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.prj DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.index DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.qpj DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.shx DEBUG: saving to: /Applications/tilemill/files/.cache/39906004488430c066551090d81caa77/world_borders_merc.shp

/Applications/tilemill/lib/node/carto/external.js:123 var cb = function(err, files) { callback(null, files.pop()); }; ^ TypeError: Cannot call method 'pop' of undefined at /Applications/tilemill/lib/node/carto/external.js:123:58 at /Applications/tilemill/lib/node/carto/external.js:138:17 at node.js:773:9

brianboyer commented 13 years ago

I can verify. Had the same new problem after pulling the fix.

tmcw commented 13 years ago

Wow. There's my javascript lesson for the day.

> 0755
493

Anyway, just fixed carto & tilemill again, git pull the one, rm -rf and ./ndistro for the other. This created some directories with really locked-down permissions, so you'll need to sudo rm -rf files/.cache to clear those out. Sorry about this, totally a core misunderstanding on my part - didn't realize that Javascript really does treat all numbers with leading zeros as hex, and that all of the filesystem-dealing code was taking advantage of this...

arturogf commented 13 years ago

Awesome. I decided to remake all from the scratch, and now it works, even with my old files directory :) Let's see how long! ;-)

Thank u tmcw. Arturo.

springmeyer commented 13 years ago

I just hit the files.pop() exception and updating fixed it.

rm -rf lib/node/carto
rm -rf modules/carto
./ndistro
tmcw commented 13 years ago

Seems to be working for everyone - update & ndistro if you're getting this error still.