Express / React-在生产中,我的axios请求包含响应中的index.html文件,但未到达我的express服务器api路由

时间:2020-05-28 14:30:08

标签: node.js reactjs express axios

我做了一些研究,发现了与此问题类似的帖子,但没有一种解决方案对我有用。

我用create-react-app创建了一个React应用,然后我创建了一个server.js文件来拥有一个Express Node服务器。我已经按照一些教程进行了操作,看来我可以在同一app / build中使用我的react app和express服务器。

在本地,一切正常,我到达了api路由。但是,当我在服务器上部署应用程序的构建时,我所有的axios请求响应都是我应用程序的index.html文件。代码中不允许axios请求到达我的api的问题是什么?

这是代码:

server.js

const connection = require("./conf");
const path = require("path");
const app = express();

app.use(express.json());
app.use(
  express.urlencoded({
    extended: true,
  })
);

app.post("/api/user", (req, res) => {
  const formData = req.body;
  connection.query("INSERT INTO user SET ?", formData, (err, results) => {
    if (err) {
      res.status(500).send("Error");
    } else {
      res.sendStatus(200);
    }
  });
});

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

app.listen(8080, () =>
  console.log("Express server is running on localhost:8080")
);

带有axios的Mail.js

axios
  .post(
    "/api/user",
    {
      email: "xxx",
      name: "xxx"
    },
    { withCredentials: true }
  )
  .then((response) => {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

和axios的响应

{data: "<!doctype html><html lang="en"><head><meta charset…s/main.f398f833.chunk.js"></script></body></html>", status: 200, statusText: ""

在控制台中,我有一个很好的网址:

xhr.js:178 XHR finished loading: POST "https://www.mywebsite.com/api/user".

如果我将此URL放在浏览器中,则会有一个空白页,就像当我将URL放在前端React Router之外时一样。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您是否将proxy放在package.json中或设置了axios的baseURL