我有以下代码,可以在运行 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-----
。
那么问题可能是别的什么?
请注意,它会默默地失败,没有异常,日志中没有任何内容。
最佳答案
在 Heroku 中,dyno 的本地文件存储不是持久的(显然除了 git repo 文件),所以如果你写入本地文件并且 dyno 重新启动,该文件将会消失,如果你启动另一个 dyno,它也不会消失。能够“查看”该文件。
heroku run bash
启动一个新的“一次性”dyno(可以在此处阅读:https://devcenter.heroku.com/articles/one-off-dynos),因此该文件将无法以这种方式访问。
如果您希望数据持久存在,最好使用一些数据库或持久存储插件。
关于node.js createWriteStream 不会在 Heroku 上创建新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30491949/