Heroku NodeJS路径问题…错误:ENOENT:没有这样的文件或目录
原学程将引见Heroku NodeJS途径成绩...毛病:ENOENT:出有如许的文件或者目次的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我有1个应用hapi.js的NodeJS运用法式,我正在测验考试从URL下载图象。Heroku给我供给了途径毛病。
我的代码:
Request(uri).pipe(fs.createWriteStream(__dirname+'/../public/images/'+filename)).on('close', callback);
我的毛病:
Error: ENOENT: no such file or directory, open '/app/../public/images/一四三0五四0七五九七五七三四一七四七_四二三二0六五七8六.jpg'
我的文件构造很简略:
app.js
-public
-images
-sampleimage.jpg
-videos
-samplevideo.mp四
-audio
-sampleaudio.wav
如您所睹,Heroku运用法式的目次称号为/app。我试过应用__目次名+‘一切途径.././等’,也试过没有应用__目次名。
我将应用ffmpeg以及语音对象创立年夜质如许的文件。有人能给我说明1下我碰到了甚么成绩吗?是不妨经由过程应用准确的途径名去处理照样须要设置装备摆设我的hapijs办事器设置装备摆设?
推举谜底
您只是在项目中有毛病的途径。
在Heroku上,您没法写进项目根目次下的文件夹。
在您的情形下,您的代码在app.js
中运转,它位于项目标"根"文件夹中。
是以,在Heroku的文件体系上,这意味着您的项目以下所示:
/app
/app/app.js
/app/public
/app/public/images
...
Heroku将您的一切代码搁进名为app
的文件夹中。
如今,在下面粘贴的代码中,您显示:
Request(uri).pipe(fs.createWriteStream(__dirname+'/../public/images/'+filename)).on('close', callback);
假如此代码在您的app.js
中运转,则意味着经由过程前往文件夹(比方:..
),您正在测验考试写进Heroku文件体系的弗成写部门。
相反,您愿望写信给:
Request(uri).pipe(fs.createWriteStream(__dirname+'/public/images/'+filename)).on('close', callback);
这将按您所需将您的文件准确写进图象文件夹。
然则
这里是工作临时变患上庞杂之处。
在Heroku上,您确切不妨将文件写进文件体系,但是它们将在短期后消逝。
Heroku的文件体系是长久的,这意味着您应当将其望为没有存留。
Heroku如许做的缘由是他们试图强制您编辑可伸缩的硬件。
假如您的运用法式将文件写进您的Web办事器磁盘,它的伸缩性没有会很年夜。缘由是磁盘空间无限。每一个Web办事器皆有本身的磁盘。这能够会招致混杂/奇异的行动,即每一个Web办事器皆有雷同文件的正本,等等。这没有是1种佳的做法。
相反:您应当应用文件保存办事(平日为Amazon S三)将文件保存在中心地位。
此办事许可叨教一切文件保存在中心地位。这意味着:
您不妨从一切Web办事器沉松拜访您的文件。
您不妨具有由公司治理的"靠得住"保存。
您不妨更佳天扩大Web运用法式。
佳了闭于Heroku NodeJS途径成绩...毛病:ENOENT:出有如许的文件或者目次的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。