Heroku:NodeJS Express 服务器无法提供图像



我在赫鲁古上有一个简单的应用程序,可以显示图像。

app.js
package.json
package-lock.json
public
|__ image1.png
|__ image2.png

这是应用程序的内容.js

const express = require('express');
const app = express();
const path = require('path');
app.set('port', (process.env.PORT || 5000));
app.use(express.static('public'));
app.get('/', function(request, response) {
const today = new Date().getHours();
const img = today <= 13 ? 'image1.png' : 'image2.png';
response.sendFile(path.join(__dirname, '../public/' + img));
});

在 Heroku 日志中,我收到此错误:错误:ENOENT:没有这样的文件或目录,统计"/public/image1.png">

我做了很多尝试,遵循以下答案:

  • https://stackoverflow.com/a/40931927/2516399
  • https://stackoverflow.com/a/25463996/2516399
  • https://stackoverflow.com/a/26079640/2516399

就我而言,这些都不起作用。可能出了什么问题?

我认为问题出在这一行path.join(__dirname, '../public/' + img)

__dirname返回正在执行脚本的目录位置。 在您的情况下,当您使用"../public' 它可能跳过应用程序.js父目录并选择app.js父目录的父目录。所以使用/public代替../public尝试下面的代码

const express = require('express');
const app = express();
const path = require('path');
//app.set('port', (process.env.PORT || 5000));
app.use(express.static('public'));
app.get('/', function(request, response) {
const today = new Date().getHours();
const img = today <= 13 ? 'image1.png' : 'image2.png';
console.log(__dirname);
console.log(path.join(__dirname, '/public', img))
response.sendFile(path.join(__dirname, '/public', img));
});

相关内容

  • 没有找到相关文章

最新更新