当我尝试访问我的MERN应用程序的根路径(“ /”)时,会发生此错误。虽然在本地机器上访问此路径工作正常,但我得到了React应用程序。 React应用程序使用3000端口,而服务器使用8080。我使用以下样板构建了我的应用程序:https://github.com/crsandeep/simple-react-full-stack/(只需更改“客户端”,“服务器”和“公共”目录中的文件,并更改“ webpack.config中客户端的路径.js“)
我还尝试使用路由器(在客户端的“ index.js”中)覆盖我应用的主要组件,如下所示:
<Router>
<Route exact path="/" component={MessageBoard} />
</Router>
但是我仍然得到错误。有什么问题吗?
UPD:server.js的内容为:
const express = require("express");
const logger = require("morgan");
const API_PORT = process.env.PORT || 8080;
const app = express();
const router = require('./routers/board');
app.use(logger("dev"));
app.use('/api', router);
app.listen(API_PORT, () => {
console.log(`LISTENING ON PORT ${API_PORT}`)
});
UPD 1:“ / etc / nginx / sites-available / default”的内容:
server {
listen 80;
server_name ec2-18-222-203-253.us-east-2.compute.amazonaws.com www.ec2-18-222-203-253.us-east-2$
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
}
答案 0 :(得分:1)
您的应用程序前面有一个NGnix服务器。此服务器的配置不正确,无法访问您的应用。问题出在NGinx的配置中,而不是您的应用中。
HTTP 404的意思是NOT_FOUND
。此错误由NGinx返回,而不是您的应用返回。
$ curl -v http://ec2-18-222-203-253.us-east-2.compute.amazonaws.com/
* Trying 18.222.203.253...
* TCP_NODELAY set
* Connected to ec2-18-222-203-253.us-east-2.compute.amazonaws.com (18.222.203.253) port 80 (#0)
> GET / HTTP/1.1
> Host: ec2-18-222-203-253.us-east-2.compute.amazonaws.com
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: nginx/1.10.3 (Ubuntu)
< Date: Tue, 12 Mar 2019 10:21:21 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 139
< Connection: keep-alive
< X-Powered-By: Express
< Content-Security-Policy: default-src 'self'
< X-Content-Type-Options: nosniff
<
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
* Connection #0 to host ec2-18-222-203-253.us-east-2.compute.amazonaws.com left intact
答案 1 :(得分:0)
您的应用似乎没有监听'/'路径...
您监听的唯一路径是“ / api”并使用路由器。
如果您想获得'/',请尝试听'/'
app.get('/',(req,res)=>{
//do something
});
或者,我注意到您的代表中有一个app.use(express.static('dist'));
,如果您的react应用或某些东西在“ dist”文件夹中,也许您应该检查“ dist”的路径。