gpt4 book ai didi

node.js - 将 Node js 应用程序部署到 MS azure 服务后出错

转载 作者:行者123 更新时间:2023-12-03 03:46:32 25 4
gpt4 key购买 nike

所以我使用 Node 、套接字 IO 创建一个应用程序,当我开始部署它时,一切都很顺利,但我开始收到 500、503 和 504 错误,但后来我做了一些更改并重新部署它,但后来我摆脱了这些错误我收到错误,但收到 403 禁止错误,表示我没有权限,这是我使用 VS 代码和 Azure 部署的社交网络应用程序,但我无法弄清楚,因为这是我第一次使用 azure 服务

这是我的主要代码

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const middleware = require('./middleware')
const path = require('path')
const bodyParser = require("body-parser")
const mongoose = require("./database");
const session = require("express-session");
const http = require('http');
// const server = require('./server');



const server = app.listen(port, () => console.log("Server listening on port " + port));
const io = require("socket.io")(server, { pingTimeout: 60000 });

app.set("view engine", "pug");
app.set("views", "views");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, "public")));

app.use(session({
secret: "bbq chips",
resave: true,
saveUninitialized: false
}))

// Routes
const loginRoute = require('./routes/loginRoutes');
const registerRoute = require('./routes/registerRoutes');
const logoutRoute = require('./routes/logout');
const postRoute = require('./routes/postRoutes');
const profileRoute = require('./routes/profileRoutes');
const uploadRoute = require('./routes/uploadRoutes');
const searchRoute = require('./routes/searchRoutes');
const messagesRoute = require('./routes/messagesRoutes');
const notificationsRoute = require('./routes/notificationRoutes');

// Api routes
const postsApiRoute = require('./routes/api/posts');
const usersApiRoute = require('./routes/api/users');
const chatsApiRoute = require('./routes/api/chats');
const messagesApiRoute = require('./routes/api/messages');
const notificationsApiRoute = require('./routes/api/notifications');

app.use("/login", loginRoute);
app.use("/register", registerRoute);
app.use("/logout", logoutRoute);
app.use("/posts", middleware.requireLogin, postRoute);
app.use("/profile", middleware.requireLogin, profileRoute);
app.use("/uploads", uploadRoute);
app.use("/search", middleware.requireLogin, searchRoute);
app.use("/messages", middleware.requireLogin, messagesRoute);
app.use("/notifications", middleware.requireLogin, notificationsRoute);

app.use("/api/posts", postsApiRoute);
app.use("/api/users", usersApiRoute);
app.use("/api/chats", chatsApiRoute);
app.use("/api/messages", messagesApiRoute);
app.use("/api/notifications", notificationsApiRoute);

app.get("/", middleware.requireLogin, (req, res, next) => {

var payload = {
pageTitle: "Home",
userLoggedIn: req.session.user,
userLoggedInJs: JSON.stringify(req.session.user),
}

res.status(200).render("home", payload);
})

io.on("connection", socket => {

socket.on("setup", userData => {
socket.join(userData._id);
socket.emit("connected");
})

socket.on("join room", room => socket.join(room));
socket.on("typing", room => socket.in(room).emit("typing"));
socket.on("stop typing", room => socket.in(room).emit("stop typing"));
socket.on("notification received", room => socket.in(room).emit("notification received"));

socket.on("new message", newMessage => {
var chat = newMessage.chat;

if(!chat.users) return console.log("Chat.users not defined");

chat.users.forEach(user => {

if(user._id == newMessage.sender._id) return;
socket.in(user._id).emit("message received", newMessage);
})
});

})

enter image description here

错误的屏幕截图。

最佳答案

Azure 应用服务不支持所有 native 模块,因此可能无法编译具有特定先决条件的模块。

有 2 种解决方法被证明对当今几乎所有可用的 native 模块都是成功的:

  • 在已设置 native 模块的所有先决条件的 Windows 系统上运行 npm install。之后,将应用程序与新形成的 Node 模块文件夹一起上传到 Azure 应用服务。

  • 您可以选择执行自定义命令,并通过配置 Azure 应用服务在部署期间执行自定义 bash 或 shell 脚本来精确控制 npm install 的运行方式。

请参阅Custom Website Deployment Scripts with Kudu由微软提供。

如果将nodejs部署到MS Azure服务时出现403错误,那么谢谢Shaun Xu发布您的suggestion作为此处的答案来帮助社区成员。

另请参阅此 403 forbidden error了解更多见解!

如果您收到 500 个错误且没有正确的消息,那么我想建议您一些故障排除步骤:

如何检查真实错误而不是 500

  1. 在您的应用服务的 Azure 门户中启用诊断日志
  2. 选择日志流
  3. 刷新您的网站。现在您应该在日志流中看到真正的错误消息。
  4. 确保您的入口点位于根文件夹中。
    • 如果您的入口点是“./bin/www”,请手动将此文件移动到根目录并更新 Web.config 中的 和 部分以使其正常工作。

    • 进行这些更改后再次部署。

<小时/>

您可以选择启用diagnostic logging适用于 Azure 应用服务中的 Web 应用。根据您选择的级别,将记录信息,您可以查看 Azure 存储或 Azure 系统上的日志文件。

为了轻松进行在线故障排除,您可以使用控制台和流日志。 IISNode 模块管理 Azure Web Apps 上的 Node.js 应用程序。有关详细信息,请参阅 Azure Web Apps 上的 Node 应用程序的最佳实践和故障排除指南。然后,您可以使用 IISNode 配置来启用模块的日志功能。

如使用 Node-Inspector 调试您的应用程序中所述, Node-Inspector 可以与 Node.js 应用程序一起使用。

<小时/>

关于node.js - 将 Node js 应用程序部署到 MS azure 服务后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68960623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com