Node.js Error ENOENT, open "file/path" when nothing has been changed

Dirly picture Dirly · Feb 2, 2014 · Viewed 21.8k times · Source

Ok first off... I'm new to Node.js. I'm trying to convert a word document to HTML then scrapping it to obtain the content. Then pump it into an existing engine.

With that being said, everything was running fairly smoothly until today. I just got the fs.writeFile working last night and stepped away from it. This morning without touching it and trying to run it I receive this:

this error

here's the block where the error is being called.

//COPY TEMPLATE AND PASTE
fs.readFile("./Templates/TextBasedEvent.xml", function (err, data){
    if (err) {
        throw err;
    }       
    var contentHolder = data.toString(),            
        contentHolder = contentHolder.replace(/%EVENTNUMBER%/gi, id),
        contentHolder = contentHolder.replace(/%CONTENT%/gi, contents);
    fs.writeFile("./bin/xml/" + id + ".xml", contentHolder, function (err){
        if (err) {
            throw err;
        }
    });
});

Does it have something to do with how the variable is placed in the file path? also the throw err for it just seems weird that it soft returned in between where the variable is.

Thanks!

Edit: The issue was with newline being pulled in, with the variable.

Answer

josh3736 picture josh3736 · Feb 2, 2014

There are a few things that might cause ENOENT when writing a file.

  • The destination directory (in this case, E:\Desktop\SniffIt\bin\xml) does not exist.
  • A newline (CR and/or LF) in the filename.

You should be using a proper XML parser to read your input file. This would probably help you avoid the spurious newlines you're getting.