如何修复Heroku部署中未找到的错误

时间:2020-04-14 05:06:16

标签: node.js heroku deployment webdeploy

我不熟悉Web开发,在使用Heroku部署我的基本网站时遇到一些问题。创建应用程序后,我已成功将应用程序推送到git并将其部署到Heroku。另外,它确实可以在本地运行。

但是,打开应用程序后(使用“ Heroku打开”命令并单击Heroku应用程序页面本身上的“打开应用程序”按钮),我得到的页面显示为未找到。 / p>

我一直在寻找解决方案,非常感谢您的帮助。谢谢。

Procfile:

web: node server.js

package.json:

 {                                                                               
   "name": "LHSite",                                                           
   "version": "1.0.0",                                                         
   "engines": {                                                                
       "node": "13.12.x"                                                       
   },                                                                          
   "scripts": {                                                                
       "start": "node server.js"                                               
   },                                                                          
   "dependencies": {                                                           
      "express": "4.17.1"                                                     
   },                                                                          
   "author": "Hunter Estrada",                                                 
   "license": "ISC"
 }

server.js

var express = require('express');
var app = express();
var port = process.env.PORT || 8080
app.use(express.static(__dirname));
app.get("/", function(req, res) {
    res.sendFile("/Users/<user>/CS/LHSite/Apr29Home.html");
}
app.listen(port, function() {
    console.log("app running");
}

文件结构: file structure for my website

这是我的应用的网址:https://lh-anni-2.herokuapp.com

1 个答案:

答案 0 :(得分:0)

express.static中间件与res.sendFile是分开的,您需要 直接在res.sendFile中使用绝对路径。您可以做到:

  1. 在当前项目文件夹中创建一个公共目录,并将html文件放在此处。

  2. 在server.js文件中包含路径模块,例如

const path = require('path');

  1. 用下面的代码行替换您的res.sendFile

res.sendFile(path.join(__dirname, './public', 'Apr29Home.html'));

注意:__dirname返回当前正在执行的脚本所在的目录。