Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Giving encoding error in nodeJS

Giving encoding error in nodeJS

Problem

I am just trying some code on NodeJS, i am new to NodeJS. I have write following block of code.

var fs = require('fs'),
    os = require('os');

var filename = 'Server.ini';
var serverData = os.hostname() + "\n" + os.platform() + "\n" + os.type() + "\n";

fs.existsSync(filename, function(exists) {
    if(exists) {
        console.log("1. " + filename + " file found. Server needs to be updated.")

        fs.unlinkSync(filename, function(error) {
            if(error) throw error;
            console.log("2. " + filename + " is been unlinked from server.");
        });

    } else {
        console.log("1. " + filename + " not found.");
        console.log("2. Server needs to be configured.");
    }
});

fs.openSync(filename, "w+", function(error) {
    if(error) throw error;
    console.log("3. " + filename + " file is been locked.");
}); 

fs.writeFileSync(filename, serverData, function(error) {
    if(error) throw error;
    console.log("4. " + filename + " is now updated.");

    fs.readFileSync(filename, 'utf-8', function(error, data) {
        if(error) throw error;

        console.log("5. Reading " + filename + " file");
        console.log("6. " + filename + " contents are below\n");
        console.log(data);
        console.log("-------THE END OF FILE-------");
    });
});

I have edited the code and added sync but now its giving me following error:

D:\NodeJS\fs>node eg5.js

buffer.js:382
      throw new Error('Unknown encoding');
            ^
Error: Unknown encoding
    at Buffer.write (buffer.js:382:13)
    at new Buffer (buffer.js:261:26)
    at Object.fs.writeFileSync (fs.js:758:12)
    at Object. (D:\NodeJS\fs\eg5.js:28:4)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

D:\NodeJS\fs>

Is there anything wrong in my code regarding utf8 !

Problem courtesy of: Ashwin Hegde

Solution

readFileSync doesn't take a callback. I guess you wanted to use readFile instead.

You have the same problem for writeFileSync. Those callbacks called upon completion make no sense when using IO functions synchronously. It's better to use the asynchronous functions (without the "Sync"), pay attention to the fact they take different arguments.

And the documentation always mentions "utf8", not "utf-8", I don't know if the latter is supported.

Solution courtesy of: Denys Séguret

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Giving encoding error in nodeJS

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×