[英]NODEJS and HEROKU : I can't serve the static files once the server is deployed
好的,我有一个简单的服务器,它是以下设置:
var port = process.env.PORT || 8080;
var server = http.createServer(app).listen(port);
process.env.PWD = process.cwd();
app.use(express.static(process.env.PWD+'/Public'));
app.get('/',function(req,res) {
res.sendfile(process.env.PWD+ '/index.html');
res.end;
});
我在文件夹中创建了一个git,并将其成功推送到heroku,但是当我打开它时,得到以下结果:
https://leoforio.herokuapp.com/
如果您打开控制台日志,则会看到它无法加载找不到的CSS和JS静态文件,尽管当我在本地测试我的应用程序时,此设置有效,并且文件已按计划提供。
我究竟做错了什么?
PS:我认为heroku没问题,我相信问题出在nodejs并上传了应用程序。
我将猜测问题出在如何为静态文件指定目录。
我通常看到的-并且更喜欢-是通过这种方式设置静态的:
app.use(express.static(__dirname + '/public'));
这意味着Express将寻求在静态文件public
你的应用程序文件在同一目录下子目录中。让我们想象一下,你有两个应用程序, app1.js
和app2.js
。 使用process.cwd()
(当前工作目录)以您的方式配置app1.js
,而app2.js
使用__dirname
作为其基础。 这两个应用程序都在/home/drizo/app
。
如果您这样做,则两者都将正常工作:
cd /home/drizo/app
node app1.js # uses cwd + /public = /home/drizo/app/public
node app2.js # uses __dirname + /public = /home/drizo/app/public
但是,如果您这样做:
cd /home/drizo # or ANY directory that's not /home/drizo/app
node app/app1.js # uses cwd + /public = /home/drizo/public - WRONG
node app/app2.js # uses __dirname + /public = /home/drizo/app/public
如您所见, app1.js
使用的是应用程序的启动目录。 我不确定Heroku如何启动/重新启动应用程序,但是我猜它不是从您期望的目录中启动的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.