我正在为Heroku部署一个简单的Express应用程序。它基本上是一个投资组合网站,提供图像以响应客户端javascript的ajax调用。现在,我的所有图像(以及其他静态css和客户端JS文件)都位于Public目录中,该目录是在通过Express CLI生成器实例化应用程序时创建的。
当我在本地运行时,一切正常,但我不想将我的图像文件直接上传到Heroku。让应用程序在那里运行似乎最简单,这样我就不必处理自己设置该服务器的问题,但我想通过托管来提供我在其他地方支付的图像。似乎只需更改Express'中间件查找Public目录的位置就可以很简单地提供所有静态文件:
// Works like this with everything in one place:
app.use(express.static(path.join(__dirname, 'public')));
// What I thought I could do to serve from elsewhere:
app.use(express.static('www.mydomain.net/path/to/public'));
我已经尝试了很多变体,比如包括__dirname(尽管我很确定这是错的)并改变路径(包括添加/到www.mydomain.net的前面)。我还确保其他地方的路径在前面不包含'./',因此它们不应该在他们自己的目录中查找。
这些都不起作用 - 我已经使用foreman和npm start在本地尝试了它们,以及实际推送到我的heroku master。我看到HTML的基本框架,但CSS和JS没有应用,图像也没有出现。控制台显示所有内容的404错误。
我已经广泛搜索了一下并且了解了相当多的Express和Heroku,但仍然无法完成这项工作。那么,有一个我忽略的简单解决方案,还是我尝试做一些没有意义的事情?
编辑:我无法理解这一点所以我只是继续将整个应用程序安装在一台服务器上。工作得很好,虽然我仍然对此感到好奇。