Search code examples
node.jsmeteormeteor-up

How to deploy with hidden dot folder (/.files) or create dot folder on production


I'm trying to create hidden dot folder on the same level as public to serve static files I generate every day.

var fs = Npm.require('fs');

Meteor.startup(function() {
  var dir = './../../../../../.files';
  if (!fs.existsSync(dir)){
      fs.mkdirSync(dir);
  }
  routePath = fs.realpathSync(dir);
})

Everything works on production but I got error during deploy : Invoking deployment process: FAILED

Logs showed I can't create this folder:

Error: EACCES, permission denied './../../../../../.files'
    at Object.fs.mkdirSync (fs.js:654:18)
    at Router.map.route.where (server/server_router.js:7:10)
    at /opt/appname/app/programs/server/boot.js:249:5
error: Forever detected script exited with code: 7
error: Script restart attempt #14 

Solution

  • Solved it using https://www.npmjs.com/package/mkdirp

    var mkdirp = Meteor.npmRequire('mkdirp');
    
    Meteor.startup(function() {
      var dir = './../../../../../.folder';
    
      mkdirp(dir, function (err) {
        if (err) console.error(err)
        else console.log('.folder created')
      });
    
      routePath = fs.realpathSync(dir);
    })