如何在 GitHub Pages 上托管 NodeJS API 服务? [重复]

问题描述 投票:0回答:1

我对 Node.js 服务如何托管在 GitHub Pages 上有些了解。

例如,我有一个 JavaScript / HTML 项目正在部署到 GitHub 并自动发布到 GitHub Pages,因此我可以导航到

https://myusername.github.io/
并查看正在运行的 Web 应用程序。

现在,直到这一刻,我都没有使用任何 API。

我想添加我自己用 Node.js 编写的 API,这是一个使用 Node.js Express 库的简单 JavaScript 文件。

因此,我创建了一个 server.js 文件并将其放置在我的应用程序的根目录中:

import express from 'express';
import fetch from 'node-fetch';
import cors from 'cors';
import convert from 'xml-js'

const app = express();

app.use(cors())

app.get('/', async (req, res) => {
  const response = await fetch('https://news.knopka.ca/rss');
  const data = await response.text();
  const json = convert.xml2json(data);
  res.json(json);
})

app.listen(3000, () => {
  console.log('listening on port 3000');
})

当我将更改(包括此文件)推送到 GitHub 时,我希望能够导航到

https://myusername.github.io:3000/
并查看它通过从上述 RSS 源获取数据并转换为 JSON 格式而生成的 JSON 结果。

GitHub Pages 自动将我的网站从存储库发布到

https://myusername.github.io/

但是如何运行在 server.js 中编码的 API?

现在,如果我导航到

https://myusername.github.io:3000/
,页面将无限期加载。

最终我想从我的页面调用该 API 并显示结果。

那么,问题是:如何以及什么执行 server.js?

我需要指导 GitHub Pages 如何运行它,还是有内置的运行程序?

我不确定。所以我尝试过的是这个。

我使用 GitHub Actions 创建了一个工作流程,在我的应用程序项目中创建了一个文件夹

.github\workflows
,并使用此publish.yml 文件

name: Node.js Package

on:
  push:
    branches: ["main"]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20.x'
      - run: npm ci
      - run: node server.js

当 GitHub Actions 看到该 yml 文件(这是 yaml 中定义的工作流程)时,它会运行它,我可以看到它正在运行,但它卡在最后一行

- run: node server.js
不断旋转该齿轮图标。

我做错了什么? 也许我不需要从工作流程中运行它?

在我的 package.json 中有这个

{
  "name": "myusername.github.io",
  "version": "1.0.0",
  "type": "module",
  "description": "**Written using HTML, Javascript, Bootstrap 3 and Google API**",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.18.3",
    "node-fetch": "^3.3.2",
    "xml-js": "^1.6.11"
  }
}

“脚本/启动”指令应该启动服务器,但我不确定是否是这样以及或者应该在哪一步运行。

那么,长话短说,如何让 server.js 在我的应用程序中的 GitHab Pages 上运行服务器,以便我可以访问其 API?

请指教。

谢谢你。

javascript node.js github-actions github-pages nodejs-express-server
1个回答
0
投票

遗憾的是,您无法在 GitHub 页面上托管后端(快速)服务器。

Github Pages 用于托管静态网站——只有前端,没有数据库,没有后端。

我建议您查看 glitch.comvercel.com 来托管后端项目。

© www.soinside.com 2019 - 2024. All rights reserved.