node.js createWriteStream不会在Heroku上创建新文件

时间:2015-05-27 19:53:46

标签: node.js heroku node.js-stream

我有以下代码在运行node.js 0.12.0的localhost上运行正常。代码创建一个新文件,并从可读文件中复制数据,但它不会在Heroku上创建新文件。

var output = fs.createWriteStream('public/images/test/testfile.png');
readable.pipe(output);

我认为它与权限有关,但每当我使用heroku run bash更改文件夹的权限,然后chmod -R 777 images/ Heroku将其重置为原始权限{{1} }。

那么问题可能是别的吗?

请注意,它无声地失败,没有例外,日志中没有任何内容。

1 个答案:

答案 0 :(得分:2)

在Heroku中,dyno的本地文件存储不是持久的(显然除了git repo文件),所以如果你写一个本地文件并且dyno重新启动文件将会消失,如果你启动另一个dyno它赢了,不能"看"文件。

heroku run bash开始新的"一次性" dyno(可以在这里阅读:https://devcenter.heroku.com/articles/one-off-dynos),因此该文件不会被访问。

如果您希望数据持久存在,请更好地使用某些数据库或持久存储插件。