从 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 项目的应用程序收到的不完整响应的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 应用程序从 GET 请求到 API 接收到空响应
Node.js完整的响应html页面(包括css,js文件)