【问题标题】:API deployed from localhost to github throw 404 error从 localhost 部署到 github 的 API 抛出 404 错误
【发布时间】:2021-08-11 16:54:03
【问题描述】:

我开始了我的第一个 api 项目并在本地主机“http://localhost:3000/api/”中对其进行了测试,一切都在浏览器上运行。

但是部署到github后,访问“https://trily84.github.io/API_timestamp/api/”会抛出404错误。

index.html 位于根文件夹“https://trily84.github.io/API_timestamp”中。我们的想法是单击 html 中的 2 个超链接作为 api 工作示例。

我是 api 和后端的新手,所以我显然遗漏了什么?

//index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <link rel="stylesheet" href="./style.css">
</head>
<body>
<a href="api/2015-12-25">[project url]/api/2015-12-25</a><br>
<a href="api/1451001600000">[project url]/api/1451001600000</a>
</html>
//server.js

var express = require('express');
var app = express();

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));

// http://expressjs.com/en/starter/basic-routing.html
app.get("/", function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

app.get('/api/:datestring?', (req, res) => { code block })

var listener = app.listen(process.env.PORT || 3000, function () {
  console.log('Your app is listening on port ' + listener.address().port);
});

【问题讨论】:

标签: javascript node.js api rest


【解决方案1】:

你不能指望 github 启动你的 express 服务器。不会的。

github.io 只提供静态文件。

【讨论】:

    【解决方案2】:

    就像@Raphael PICCOLO 所说,Github 只提供静态文件。您不能在 Github 上运行 Nodejs 应用程序。您可以改用this。我在故障上部署了我的 freecodecamp 任务并且它有效。你可以看到这个link

    我不明白为什么“trily84.github.io/API_timestamp/index.html”有效?但不是“localhost:3000/index.html”

    在您的文件夹中,您有 index.html 文件,Github 提供此文件(它对您的 nodejs 代码没有任何作用)。 localhost 中的错误是因为您没有“/index.html”路由并且文件index.html 不在public 文件夹中。您可以将index.html 移动到public 文件夹中,看看会发生什么:)。在这种情况下,这部分就不再需要了。

    app.get("/", function (req, res) {
      res.sendFile(__dirname + '/index.html');
    });
    

    (这里会处理“/”路径,访问http://localhost:3000时你有index.html的内容)

    【讨论】:

    • 所以当我们在“ddkhoa-fcc-apims-timestamp.glitch.me”访问你的页面时,它实际上并没有打开index.html,它实际上只是通过server.js路由到index.html?又怎么知道一开始就执行server.js?
    • 是的,app.get("/") 路由被执行并给出了 index.html。对于故障,我在 package.json 中添加了“main”属性,让它知道哪个文件是应用程序的主条目,如下所示:“main”:“server.js”。
    【解决方案3】:

    感谢大家的cmets。我最终部署到 Heroku 并且它工作正常!

    【讨论】:

      猜你喜欢
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 2015-01-21
      • 2015-08-02
      相关资源
      最近更新 更多