Служить Gatsby-генерируемый сайт с ExpressJS - PullRequest
0 голосов
/ 18 апреля 2020

Я размещаю сайт, созданный Gatsby, за локальным веб-сервером. Я собираюсь подать мои stati c файлы, сгенерированные в каталог public, на простом express сервере . Способ сделать это выглядит следующим образом:

const express = require('express');
const path = require('path');
const port = process.env.PORT || 8080;
const app = express();

// the __dirname is the current directory from where the script is running
app.use(express.static(__dirname));

// send the user to index html page inspite of the url
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'index.html'));
});

app.listen(port);

Однако при загрузке индекса я получаю пустую страницу индекса. html при выполнении некоторых простых тестов. Выходные данные веб-консоли в Firefox показывают две ошибки, подобные этой (одна для socket.io. js и другая для commons. js):

The script from “http://0.0.0.0:8080/socket.io/socket.io.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type.
0.0.0.0:8080
SyntaxError: expected expression, got '<'

socket.io. js и commons. js файлы выглядят как идентичные html -форматированные файлы, которые оба ссылаются на скрипт. commons. js, что меня очень смущает):

<!DOCTYPE html><html><head><meta charSet="utf-8"/>
...
<script src="/commons.js">
...

Этот контент в настоящее время создается и обслуживается правильно на мой веб-сайт под Apache сервером (не Express), errcsool.com , используя сборку gatsby и корректно работает на сервере веб-пакетов, правильно используя развитие gatsby. Я предполагаю, что с контентом, созданным с помощью Gatsby, все в порядке, хотя, может быть, контент должен быть по-разному упакован для Express.

Для контекста, я сейчас пытаюсь переключиться с Apache на архитектуру микросервиса, используя Посланник прокси-сервера.

...