仅使用简单的代码,可以正常工作,但是当我尝试从谷歌控制台获取本地主机时,会显示错误:
fetch('http://localhost:3500/');承诺 {} VM42:1 GET http://localhost:3500/net::ERR_FAILED(匿名)@ VM42:1 VM42:1 未捕获(承诺中)类型错误:无法获取 于:1:1
const express = require("express")
const app = express();
const path = require("path");
const cors = require("cors")
const PORT = process.env.PORT || 3500;
app.use(cors())
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(express.static(path.join(__dirname, "/public")));
app.get('/*', (req, res)=> { // page not found
res.status(404).sendFile(path.join(__dirname, "views", "404.html"));
});
app.listen(PORT, ()=> {
console.log("Server running on port "+PORT);
});
你似乎有SPA,所以问题是一旦加载了index.html,你实际上正在提供404。
SPAas 通常是在每个请求上发送 index.html,以便 SPA 的路由器来处理它。另外,API 路由处理程序应该在此之前设置。
试试这个。
// setup API routes for frontend router (users, get data and other stuff..)
//app.use('/api', apiHandlers);
// serve SPA on all routes
app.get('/', (req, res)=> {
res.sendFile(path.join(__dirname, "views", "index.html"));
});
// handle error
app.use((err, req, res, next)=>{
res.status(404).sendFile(path.join(__dirname, "views", "404.html"));
});