我试图建立一个网站托管静态内容,使用GatsbyJS。我的一些页面使用了战略科学军团。当我从项目根使用gatsby serve
运行它时,我能够查看这些页面。我不确定如何部署和托管这个具有SSR功能的应用程序。根据本页,gatsby serve
仅用于测试生产构建,这推断可能有不同的策略来托管实际的生产。
我们的目标是部署到虚拟专用服务器(vps)或Azure应用服务,在那里我们或多或少地完全控制我们的环境。
我能够使用这个脚本在Azure应用服务(win-node16)上托管静态站点:
const express = require('express');
const gatsbyExpress = require('gatsby-plugin-express');
const app = express();
const port = process.env.PORT || 8080;
const dev = process.env.NODE_ENV !== "production";
// serve static files before gatsby
Express app.use(express.static('public/'));
app.use(gatsbyExpress('config/gatsby-express.json',
{
publicDir: 'public/',
redirectSlashes: true,
}));
app.listen(port, function() {
console.log(`App started on port ${port}`);
});
似乎可以很好地服务于静态页面,但是所有带有SSR的页面都返回404。我猜测这可能是因为这些页面没有生成html存根。因为我是新的表达,我也不确定这是否是正确的方法
如果有人对托管有什么建议,我将不胜感激。
不幸的是,这个插件gatsby-plugin-express
是2或3岁,因此不支持服务器端渲染。
您可以看到这个问题如何在生产环境中正确运行带有SSR的gatsby以获得更多选项。
TL;DR:没有自托管的选项,除非你自己写。