【问题标题】:How to Fix Not Found Error with Heroku Deployment如何使用 Heroku 部署修复 Not Found 错误
【发布时间】:2020-04-14 05:06:16
【问题描述】:

我是 Web 开发的新手,在使用 Heroku 部署我的非常基本的网站时遇到了一些问题。创建我的应用程序后,我已成功将我的应用程序推送到 git 并将其部署到 Heroku。此外,它在本地运行也很好。

但是,在打开应用程序时(使用“Heroku 打开”命令并单击 Heroku 应用程序页面本身上的“打开应用程序”按钮),我得到一个显示 Not Found 的页面。

我一直在寻找解决方案,非常感谢这里的一些帮助。谢谢你。

过程文件:

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

【问题讨论】:

  • 分享你的 herokuapp 网址
  • 刚刚编辑了问题并包含了网址。

标签: node.js heroku deployment webdeploy


【解决方案1】:

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 返回当前执行脚本所在的目录。

【讨论】:

  • 谢谢,您可以在 url 上找到一些东西。但是,即使我将所有的 css 和 html 文件都放到了 public 文件夹中,也只会显示我的一些样式,并且无法访问到我创建的其他 html 文件的链接。你知道这是为什么吗?
  • 替换 app.use(express.static(__dirname));与 app.use(express.static('public')); // 或者你的静态文件夹名称
  • 非常感谢。真的很感激。
猜你喜欢
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 2021-09-25
  • 2019-04-01
  • 1970-01-01
  • 2020-04-10
相关资源
最近更新 更多