【发布时间】:2025-12-07 19:35:01
【问题描述】:
我在 Heroku 中运行一个简单的测试站点时遇到了问题。出于某种原因,当我希望它从 /build/ 提供内容时,它试图从 /app/build/ 提供内容。
错误:ENOENT:没有这样的文件或目录,stat '/app/build/index.html'
我读到 here 不要在 express 应用程序中使用 __dirname,因为 Heroku 将它设置为 /app,我应该使用 process.cwd();
process.env.PWD = process.cwd();
但它没有用。下面是我的 server.js express 应用和文件夹结构
const path = require('path');
const express = require('express');
const port = process.env.PORT || 8080;
const app = express();
process.env.PWD = process.cwd();
app.use(express.static(process.env.PWD + '/build'));
app.get('*', function (req, res) {
const index = path.join(process.env.PWD, '/build/index.html');
res.sendFile(index);
});
app.listen(port);
console.log('server_started');
【问题讨论】:
-
您是否尝试使用
__dirname而不是process.env.PWD,我部署了一个站点 -
我最初尝试过,但它不起作用。我发现上面的链接说_dirname被映射到heroku中的'app'并尝试process.cwd()但它正在做同样的事情。