在本地工作的图像在NodeJS Heroku App上被破坏



我刚开始使用Heroku,发现一组特定的图像在本地工作良好,在我部署的应用程序上显示断开的链接。控制台错误是"加载资源失败:服务器响应的状态为404(未找到)">

该应用程序是一个普通的Js应用程序,使用不可变Js和Node Express服务器,该服务器使用来自Nasa火星探测器api的数据。

My app on Heroku

我的服务器在点击时发出Get请求,并为3个火星漫游者获取数据和图像数组。由于Nasa的api不包括实际漫游车本身的图像,只有漫游车拍摄的图像,所以我找到了每个漫游车的图像,存储在我的本地资产文件夹中,并通过api调用显示,如下-

<img src='https://mars-rover-dashboard-app.herokuapp.com/public/assets/images/${
roverData.rover.get("name") + ".png"}' alt='rover image' class='sidebar__main-rover-img'>

我研究了这个问题,并认为这可能是因为它引用了一个只存在于本地的路径,而不是在Heroku应用程序本身。我添加了我的Heroku应用程序的url,它仍然不起作用。不知道还能尝试什么吗?

我不确定你的问题是什么,但下面的解决方案帮助我在Heroku上提供图像。当从js前端使用它时,创建一个提供图像的路由会更容易、更好。

提供图片的路由

app.get('/images/:id', jsonParser, (req, res) => {
const id = req.params.id
res.sendFile(id, { root: './images' })
})

把images文件夹放在app.js文件所在的位置,并在你的前端提供源代码,像这样

<img src="/images/rovername.png" />

这将创建一个get请求到您的/images路由的图像的名称,如

https://mars-rover-dashboard-app.herokuapp.com/images/rovername.png.

最后我只是写了逻辑来返回Nasa网站上的带有绝对路径的图像。也许不是最优雅的解决方案,但现在可以快速修复它。在我的研究中,我发现在Amazon Web Services上设置S3桶,这是我将来对这个应用程序进行修改的地方。

相关内容

  • 没有找到相关文章

最新更新