我正在直接从URL下载图像,它在本地运行非常理想。但是,一旦在Heroku上暂存该应用程序,Node就无法访问用户的主目录。它正在尝试将图像下载到Heroku上apps本地目录中的/ downloads文件夹中,由于该文件夹不存在,因此返回400 ENOENT。
以下是负责保存图像并根据用户的操作系统查找用户主目录的代码:
const download = require('image-downloader');
const path = require('path');
const userDownloadDirectory = path.join(require('os').homedir(),'downloads');
exports.download_image = (req,res,next) => {
const { body } = req;
const { imageUrl,gameName } = body;
const options = {
url: imageUrl,dest: `${userDownloadDirectory}`
};
download
.image(options)
.then(({ filename,image }) => {
return res.status(200).send(filename);
})
.catch(err => {
const error = new Error();
error.message = err;
error.status = 400;
next(error);
});
};
此行负责根据用户的操作系统为用户/ downloads文件夹构建路径:
const userDownloadDirectory = path.join(require('os').homedir(),'downloads');
在本地这很好用。但是一旦在Heroku上,它就会吐出来:
dest: '/app/downloads'
Heroku正在构建一个不存在的目录的路径(/ app告诉我它正在尝试在Heroku上的app目录中找到此文件夹),结果我收到一条ENOENT错误,指出该目录不存在。
当我在本地计算机上运行应用程序时,这是该行弹出的内容:
dest: '/Users/maisonm/downloads'
此目录路径是我的本地下载文件夹,我要在其中保存这些图像。
当它在Heroku上运行时,如何让Node建立到用户下载文件夹的路径?