gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:51:46 27 4
gpt4 key购买 nike

我在 Heruku 上有一个显示图像的简单应用。

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

这里是app.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 日志中,我收到此错误:Error: ENOENT: no such file or directory, stat '/public/image1.png'

根据这些答案,我做了很多尝试:

这些都不能解决我的问题。有什么问题吗?

最佳答案

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

__dirname 返回执行脚本的目录位置。在您的情况下,当您使用 '../public' 加入路径时,它可能会跳过 app.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));

});

关于javascript - Heroku:NodeJS Express 服务器无法提供图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com