在Heroku上,node.js的createWriteStream方法不能创建新文件

4

我有下面的代码,在我的本地运行node.js 0.12.0时正常工作。该代码创建一个新文件,并从可读流中复制数据,但在Heroku上不会创建新文件。

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

我认为这可能与权限有关,但每当我使用 heroku run bash 更改文件夹的权限,然后运行 chmod -R 777 images/,Heroku 会将其重置回原始权限,即 drwx------

因此,问题可能是其他方面引起的?

请注意,它默默失败,没有异常,在日志中也没有任何信息。

1个回答

4
在Heroku中,除了git仓库文件之外,dyno的本地文件存储是不持久的。因此,如果您写入本地文件并且dyno重新启动,则该文件将消失,并且如果您启动另一个dyno,则无法“看到”该文件。 heroku run bash会启动一个新的“一次性”dyno(可以在这里阅读有关它的信息:https://devcenter.heroku.com/articles/one-off-dynos),因此该文件将无法通过此方式访问。
如果您希望数据持久存在,请使用一些数据库或持久性存储插件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接