Javascript 只能通过编程方式访问Heroku url路由

Javascript 只能通过编程方式访问Heroku url路由,javascript,reactjs,heroku,Javascript,Reactjs,Heroku,很抱歉,如果这个问题很模糊,但我真的不知道要显示什么代码 我有一个Heroku网页,运行良好。我正在使用reach路由器通过单击按钮从一个页面导航到另一个页面:navigate'/intro'}>Click。当我这样做时,url会相应地改变,并且我的内容是可见的。然而,如果我键入完全相同的url,我会得到一个错误,说不能获取/intro。如果我使用按钮单击导航然后重新加载页面,甚至会发生此错误 我的理解是app.useexpress.static'build';将提供我的静态文件 那么,如果我从

很抱歉,如果这个问题很模糊,但我真的不知道要显示什么代码

我有一个Heroku网页,运行良好。我正在使用reach路由器通过单击按钮从一个页面导航到另一个页面:navigate'/intro'}>Click。当我这样做时,url会相应地改变,并且我的内容是可见的。然而,如果我键入完全相同的url,我会得到一个错误,说不能获取/intro。如果我使用按钮单击导航然后重新加载页面,甚至会发生此错误

我的理解是app.useexpress.static'build';将提供我的静态文件

那么,如果我从我的根url开始并从那里导航,但我不能输入url并访问该页面,为什么我可以访问这些页面呢

网站在这里直播

添加有关my server.js的更多详细信息

const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const cors = require('cors');
const sessionMiddleware = require('./modules/session-middleware');
require('dotenv').config();

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(sessionMiddleware);

app.use(cors());

// Serve static files
app.use(express.static('build'));
app.use(express.static(path.resolve(__dirname, '..', 'build')));

const users = require('./routes/users.router');
const dataFetch = require('./routes/data.router');
const venues = require('./routes/venues.router');

app.use('/users', users);
app.use('/location', dataFetch);
// app.use('/', auth);
app.use('/venues', venues);

const PORT = process.env.PORT || 3001;

app.listen(PORT, () => {
  console.log(`Listening on port: ${PORT}`);
});
当我以编程方式导航时,我看到的是我的源代码


当我输入相同的URL时,这里是源目录树

请确保您的express应用程序正在侦听这些路由并向它们发送响应。 例如:

只需在React项目的根目录下创建一个包含以下内容的static.json文件:

{
  "root": "build/",
  "clean_urls": false,
  "routes": {
    "/**": "index.html"
  }
}

表示未为虚拟目录配置服务器。你用过heroku构建包吗?您的react应用程序是否基于创建react应用程序?如果正在为其安装buildpack,则应修复issue@charlietfl我使用了npx创建反应应用程序。我认为我没有使用任何构建包。如何安装它们?对于部署之前的:。您也可以在部署后安装,我认为是从仪表板上安装的,但已经很长时间了,所以请阅读buildpack docslooks这样的作品,谢谢!好奇…你是从仪表板还是CLI上做的?我可以试试这个。app.useexpress.static'build'不应该处理这个问题吗?另外,本例中的路径页是什么?这与客户端路由alright无关,因此,不要导航到“/intro”,而是尝试导航到“intro.html”,我认为这是最终的解决方案:。我已经有了。它是否没有被正确引用?它是否与package.json文件处于同一级别并被推送到heroku?它与package.json处于同一级别,我假设它被推送到heroku,因为它不在我的.gitignore中。我正在使用@reach/router进行前端导航。我不确定这是否是问题所在?
{
  "root": "build/",
  "clean_urls": false,
  "routes": {
    "/**": "index.html"
  }
}