反应路由器会否覆盖app.get('/ ping'的URL路由?

时间:2020-05-07 14:36:48

标签: node.js api express react-router url-routing

我目前有一个共享主机(CPanel),它正在为客户端代码提供Node.JS的静态版本。在相同的来源和共享主机上,我正在运行一个Express服务器,如下所示:

const express = require('express')
const path = require('path')
const app = express()

const express = require('express')
const path = require('path')
const app = express()

// This doesn't work
app.get('/ping', (req, res) => {
  return res.send('pong')
})

app.use(express.static(path.join(__dirname, 'build')))


app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'build', 'index.html'))
})

app.listen(8080) (req, res) => {
  return res.send('pong')
})

app.use(express.static(path.join(__dirname, 'build')))

// This serves out the static build of the client side code (App.js) - and works
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'build', 'index.html'))
})

app.listen(8080)

我正在尝试为服务器端创建与客户端交互的API。当我访问根目录“ /”时,主应用程序可以完美运行。但是,当我尝试访问API的这一部分时,似乎无法在服务器端使用此代码:

app.get('/ping', (req, res) => {
      return res.send('pong')
    })

当我使用'/ ping'访问URL时,它只给我一个空白屏幕而没有说'pong'。但是,在静态版本中,我使用的是BrowserRouter,当我访问URL中的“ / rooms / id”时,它会完美地将URL分配给页面:

 function App() {
  return (

    <BrowserRouter>
      <Switch>
        <Route path="/" exact component={CreateRoom} />
        <Route path="/room/:roomID" component={Room} />
      </Switch>
    </BrowserRouter>
  );
}

此客户端代码是否与我的服务器端代码冲突?我该如何获得一个API来在同一来源上为我的客户端和服务器端服务?

1 个答案:

答案 0 :(得分:0)

解决了:

我需要在根目录上找到一个名为“ ping”的文件夹。

这是我第一次构建API,因此希望我能正确执行!