meteor js how to write a file to disk from the server

javascript, meteor, node.js

Solution

To get the path of your project you can do this : from main.js stored in the root of your app

var fs = Npm.require('fs');
__ROOT_APP_PATH__ = fs.realpathSync('.');
console.log(__ROOT_APP_PATH__);

You can also check if your folder exists :

if (!fs.existsSync(myPath)) {
    throw new Error(myPath + " does not exists");
}

Hope it will help you

Problem

I am writing a meteor package 'myPackage' which needs to write a file onto disk using Npm FileSystem and Pah modules. The file should end up in the example-app/packages/myPackage/auto_generated/myFile.js, where example-app project has myPackage added. ``` fs = Npm.require( 'fs' ) ; path = Npm.require( 'path' ) ; Meteor.methods( { autoGenerate : function( script ) { var myPath = '/Users/martinfox/tmp/auto-generated' ; var filePath = path.join(myPath, 'myFile.js' ) ; console.log( filePath ) ; // shows /Uses/martinfox/tmp/auto-generated/myFile.js var buffer = new Buffer( script ) ; fs.writeFileSync( filePath, buffer ) ; }, } ); ``` When I run the code above (server side only) I get ``` Exception while invoking method 'autoGenerate' Error: ENOENT, no such file or directory '/Uses/martinfox/tmp/auto-generated/myFile.js' ``` Note /Uses/martinfox/tmp/auto-generated folder does exist - Any ideas what is going wrong? - Is it possible to obtain the absolute path to the meteor projects directory?

Original source