我目前有一个共享主机(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来在同一来源上为我的客户端和服务器端服务?
答案 0 :(得分:0)
解决了:
我需要在根目录上找到一个名为“ ping”的文件夹。
这是我第一次构建API,因此希望我能正确执行!