Javascript Express是否每次请求都会运行app.js?
我正在用非常标准的东西构建一个express服务器。我一直无法让express.router()正确执行我的路由,这使我更深入地了解当运行express应用程序的服务器请求页面时实际发生的情况Javascript Express是否每次请求都会运行app.js?,javascript,node.js,express,Javascript,Node.js,Express,我正在用非常标准的东西构建一个express服务器。我一直无法让express.router()正确执行我的路由,这使我更深入地了解当运行express应用程序的服务器请求页面时实际发生的情况 console.log('App.JS has ran!'); var http = require('http'); var express = require('express'); var app = express(); var server = http.createServer(app); v
console.log('App.JS has ran!');
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var mongoose = require('mongoose');
mongoose.connect('mongodb://52.27.161.16');
mongoose.connection.on("connect",function(err) {
if (err) throw err;
console.log('hello found!');
});
var bodyParser = require('body-parser');
app.use(bodyParser.json());
var router = express.Router();
router.get('/hi'), function (req, res) {
res.send('/hi route response');
};
router.get('/', function(req, res) {
res.send('default route reached');
});
app.use('*', router);
server.listen(config.server.listenPort);
非常标准的东西,但出于某种原因,每当我导航到localhost:port/hi时,我只从/
路径获取res
,即router.get('/',function{}(res.send('default route reated');
因此,我对幕后发生的事情越来越感兴趣。我注意到服务器只在第一次请求时将与bodyParser
无关的输出记录到终端。即,文件顶部的console.log
仅在应用程序启动时运行,而不是在应用程序启动后运行正确记录每个请求实例的请求
当向服务器发出请求时,到底发生了什么?是否缓存并提供了app
对象和路由?为什么没有对每个请求重新评估app.js
?是否只有路由器
对象负责发送请求
了解这一点,找出我的路由器
没有以正确的路由响应的原因,会很有帮助
非常感谢!应用程序对象是您正在创建的express应用程序。它基本上是包含所有express功能的express模块的包装器。它基本上减少了处理向服务器发出的请求、呈现HTML视图、注册模板引擎等所需的代码。此应用程序object被传递给您正在创建的服务器对象,服务器会持续侦听您配置的端口中的请求。因此,当服务器运行时,应用程序对象只启动一次,对服务器的请求由节点事件循环处理。应用程序对象是您正在创建的express应用程序。它基本上是包含所有express功能的express模块的包装器。它基本上减少了处理向服务器发出的请求、呈现HTML视图、注册模板引擎等所需的代码。此应用程序对象将传递给您正在创建的服务器对象,服务器将持续列出ns到您配置的端口中的请求。因此,当服务器运行时,应用程序对象只启动一次,对服务器的请求由节点事件循环处理。应用程序对象是您正在创建的express应用程序。它基本上是express模块的包装,包含所有express功能alities。它基本上减少了处理向服务器发出的请求、呈现HTML视图、注册模板引擎等所需的代码。此应用程序对象将传递给您正在创建的服务器对象,服务器将在您配置的端口中持续侦听请求。因此,当服务器运行时pp对象只启动一次,对服务器的请求由节点事件循环处理。app对象是您正在创建的express应用程序。它基本上是express模块的包装器,包含所有express功能。它基本上减少了处理对se的请求所需的代码服务器、呈现HTML视图、注册模板引擎等。此应用程序对象将传递给您正在创建的服务器对象,服务器将持续侦听您配置的端口中的请求。因此,当服务器运行时,应用程序对象仅启动一次,对服务器的请求由节点ev处理ent循环。当你说你导航到
/hi
,那是在浏览器中,还是你真的在做post请求?你通过浏览器做get或post请求?轻微错误,它实际上是一个。get
。修复了!感谢你抓住了这个问题。对于你剩下的问题,只有中间件(app.use)每次有人向您的服务器发出请求时,路由器都会被击中。只有在您第一次引导应用程序时,才会在顶部首次加载requires。非常好的信息!我假设这是通过http.createServer(app)中传递的app
对象发生的方法。当你说你导航到/hi
时,那是在浏览器中,还是你真的在做post请求?你通过浏览器执行get或post请求?轻微错误,它实际上是一个。get
。修复了!感谢你抓住了这个问题。对于你剩下的问题,只有中间件(app.use)每次有人向您的服务器发出请求时,路由器都会被击中。只有在您第一次引导应用程序时,才会在顶部首次加载requires。非常好的信息!我假设这是通过http.createServer(app)中传递的app
对象发生的方法。当你说你导航到/hi
时,那是在浏览器中,还是你真的在做post请求?你通过浏览器执行get或post请求?轻微错误,它实际上是一个。get
。修复了!感谢你抓住了这个问题。对于你剩下的问题,只有中间件(app.use)每次有人向您的服务器发出请求时,路由器都会被击中。只有在您第一次引导应用程序时,才会在顶部首次加载requires。非常好的信息!我假设这是通过http.createServer(app)中传递的app
对象发生的方法。当你说你导航到/hi
时,那是在浏览器中,还是你真的在做post请求?你通过浏览器执行get或post请求?有点小错误,它实际上是一个。get
。修复了!感谢你抓住了这个问题。对于你剩下的问题,只有中间件(app.use)和