在cPanel上部署Node.js应用程序时,如何解决错误500?

qzlgjiam  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(523)

你好:)我正在尝试解决我的节点应用程序的问题。在开发中,我没有任何担心,一切都是功能性的。我想通过CPANEL部署我的应用程序,我做了一个测试路线,以验证应用程序的工作。
这将返回状态500,并显示以下消息:“内部服务器错误”。
我检查了我的server.js文件,我不明白问题来自哪里。当我从前面发出请求时,我也会收到这样的消息:CORS策略已阻止从源“http://www.example.com”访问位于“http://cinefilmsnodeserver.cinefilms.fr/api/check”的XMLHttpRequesthome.cinefilms.fr:请求的资源上不存在“Access-Control-Allow-Origin”标头。
cors头文件是在我的server.js文件中定义的
下面是文件代码:

const express = require("express");
const postRoutes = require("./routes/post.routes");
const userRoutes = require("./routes/user.routes");
require("dotenv").config();
const app = express();

const PORT = process.env.PORT || 3001;

app.use(express.json());

app.get("/test-no-cors", (req, res) => {

  res.status(200).json({ message: "API connected successfully" });
});

const allowOrigins = [process.env.CLIENT_URL];

app. use((req, res, next) => {
  if (req.headers.origin && allowOrigins.includes(req.headers.origin)) {
    res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
  } else {
    res.setHeader("Access-Control-Allow-Origin", "null");
  }
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Content-Type, Accept, Origin, Authorization"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PUT, DELETE, PATCH, OPTIONS"
  );
  res.setHeader("Access-Control-Allow-Credentials", "true");
  next();
});

app. use("/api", userRoutes);
app. use("/api/post", postRoutes);

app. listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`);
});`

先谢谢你的帮助
我希望我可以部署我的nodejs应用程序

yws3nbqq

yws3nbqq1#

在您的代码中,“/test-no-cors路由”是在CORS中间件之前定义的,因此您的CORS策略中间件不会应用于它。
要将CORS策略应用于所有路由,请在定义任何路由之前定义CORS中间件。
下面是正确的代码:

const express = require("express");
const postRoutes = require("./routes/post.routes");
const userRoutes = require("./routes/user.routes");
require("dotenv").config();
const app = express();

const PORT = process.env.PORT || 3001;

app.use(express.json());

const allowOrigins = [process.env.CLIENT_URL];

app.use((req, res, next) => {
  if (req.headers.origin && allowOrigins.includes(req.headers.origin)) {
    res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
  } else {
    res.setHeader("Access-Control-Allow-Origin", "null");
  }
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Content-Type, Accept, Origin, Authorization"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PUT, DELETE, PATCH, OPTIONS"
  );
  res.setHeader("Access-Control-Allow-Credentials", "true");
  next();
});

app.get("/test-no-cors", (req, res) => {
  res.status(200).json({ message: "API connected successfully" });
});

app.use("/api", userRoutes);
app.use("/api/post", postRoutes);

app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`);
});

相关问题