NodeJS-如何从Heroku中找到用户本地/ downloads目录的路径?

我正在直接从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建立到用户下载文件夹的路径?

lmn1101 回答:NodeJS-如何从Heroku中找到用户本地/ downloads目录的路径?

就像Heruko一样,将require('os').homedir()解析为/可能是完全有效的。 就我个人而言,我没有使用Heroku的经验,但是看起来它要么在容器中运行东西,要么掩盖了用户(显然是目录)。

我认为,最适合您的解决方案是配置将内容下载到的正确路径。 即使downloads对您有用,我也可以向您保证,它对我也不起作用(因为我的下载目录称为Downloads)。

所以您应该去创建一个合适的挂载,并配置您的应用程序以在其中保存内容。

顺便说一句。如果您关心主目录节点figures out的方式,请按以下步骤操作:

  1. 读取HOME变量
  2. 通过调用password来读取getpwuid_r中的条目,并返回主目录
本文链接:https://www.f2er.com/3143303.html

大家都在问