如何从heroku中删除静态文件或目录?

时间:2016-09-04 11:29:44

标签: javascript node.js git bash heroku

我在公共目录中动态创建包含图像的文件夹,其类似于此public/indiv/compa/ferfw432ervr12/test.png。我想删除indiv目录。我试过做heroku运行bash。并使用rm删除目录。之后我做了ls我无法找到该文件所以我认为一切都很好但是当我转到网址时我仍然可以看到图像所以我做了heroku run bash并且文件仍然存在。我希望他们走了。

我也做过这样的事情:

var deleteFolderRecursive = function(path) {
  if( fs.existsSync(path) ) {
    fs.readdirSync(path).forEach(function(file,index){
      var curPath = path + "/" + file;
      if(fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
};

看起来即使在我git push heroku master

之后,它也从本地删除了文件而不是heroku

1 个答案:

答案 0 :(得分:1)

您需要了解Heroku ephemeral filesystem的工作原理。

你推送到Heroku的任何文件都存在于你运行的任何一个dyno的文件系统中。 听起来你有一个web dyno动态创建一个包含各种图像文件的目录。可能对Heroku来说不是一个好主意,除非你真的只需要那些动态生成的文件只能用于创建它们的dyno实例,并且只在dyno实例current cycle的持续时间内可用。 你不太可能拥有一个真正证明这样做的用例,但是让我们说你这样做。进入并做一个" heroku运行bash"只需创建一个新的"一个关闭" dyno实例,它有自己的短暂文件系统,与Web dyno的短暂文件系统完全分开。 因此,删除一次性dyno中的文件或目录绝对不会影响web dyno的行为。