从 Node Js 项目的应用程序收到的不完整响应

Posted

技术标签:

【中文标题】从 Node Js 项目的应用程序收到的不完整响应【英文标题】:Incomplete response received from application on Node Js Project 【发布时间】:2021-12-05 02:20:23 【问题描述】:

我尝试从 cpanel 安装 NPM 包。但是当我尝试打开网站时,我收到了来自应用程序的响应不完整的响应。当我离线运行它时,它可以正常工作,但是当我将它移动到 cpanel 时,它给了我不完整的响应错误

var express         = require("express"),
    app             = express(),
    mongoose        = require("mongoose"),
    flash           = require("connect-flash"),
    passport        = require("passport"),
    LocalStrategy   = require("passport-local"),
    session         = require("express-session"),
    methodOverride  = require("method-override"),
    nodemailer      = require("nodemailer"),
    multer          = require("multer"),
    dotenv          = require("dotenv").config(),
    Product         = require("./models/products"),
    User            = require("./models/user");

    var mongoDB = process.env.MONGODB_URL;
    mongoose.connect(mongoDB,  useNewUrlParser: true , useUnifiedTopology: true);
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'MongoDB connection error:'));

var indexRoutes = require("./routes/index"),
    storeRoutes = require("./routes/products");

app.use(express.urlencoded(extended: true));
app.use(express.json());
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));
app.use(methodOverride("_method"));
app.use(flash());

//User Passport Config
app.use(require("express-session")(
    secret: process.env.SECRET,
    resave: false,
    saveUninitialized: false
));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(function(req, res, next)
    res.locals.currentUser = req.user;
    res.locals.error = req.flash("error");
    res.locals.success = req.flash("success");
    next();
);

app.use(indexRoutes);
app.use("/store", storeRoutes);
app.use(function(req, res)
    res.send ("Error finding page")
)

const port = process.env.PORT;
app.listen (port, function()
    console.log ("Server Active");
);

这是我在.htaccess 文件中看到的。我只在.env 文件中放置了一些密码和其他私人信息

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php70” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php70 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/zenitcou/zenitcouture"
PassengerBaseURI "/"
PassengerNodejs "/home/zenitcou/nodevenv/zenitcouture/11/bin/node"
PassengerAppType node
PassengerStartupFile app.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END

【问题讨论】:

它可能与配置文件(例如.htaccess)而不是实际的node.js脚本本身有关。 那我该如何解决呢? 您需要共享.htaccess 文件或(开发人员/系统管理员/教程?)告诉您的其他配置文件。因为你在 Cpanel 上,很可能 apache 代理搞砸了。 我已经用.htaccess 更新了这个问题。 @willnode 【参考方案1】:

分享您收到的回复,我们可以更好地帮助您

【讨论】:

来自网站的响应是从应用程序收到的不完整响应。这就是浏览器上显示的内容【参考方案2】:

根据提供的配置,我无法说出确切的原因,但我可能有足够的经验为什么您最终会收到“从应用程序收到不完整的响应”。

错误消息可能令人困惑,但它真正想说的是,在代理又名发送 HTTP 请求时,您的应用实际上并没有发送任何内容。 Phusion 乘客。

您可以在their docs 中阅读更多关于这些乘客配置的信息 但我的要点是其中之一:

    您的应用程序可能由于配置不当而崩溃。我建议使用PassengerAppEnv development 来跟踪错误消息。 Node.JS 上的 Phusion 乘客集成有点神奇,它们只是 don't care 什么 app.listen 端口你正在放弃。但它可能会崩溃,因为您将它们设置为undefined。请在您的 PORT 环境中设置后备,例如 const port = process.env.PORT || 80; 您将PassengerStartupFile 设置为app.js。这是真的吗? (人们通常将他们的主入口文件设置为server.js。您必须确保该文件存在。

【讨论】:

以上是关于从 Node Js 项目的应用程序收到的不完整响应的主要内容,如果未能解决你的问题,请参考以下文章

从 php 到 iOS 应用程序的不完整 json 响应

Node.js 应用程序从 GET 请求到 API 接收到空响应

来自 nginx / 乘客的“从应用程序收到不完整的响应”

Node.js完整的响应html页面(包括css,js文件)

无法在 aws-sdk(node.js)中收到 503 错误(服务不可用)的响应

node-fetch 从 html 网站获取 id 但我收到错误 200 undefined