Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express是否每次请求都会运行app.js?_Javascript_Node.js_Express - Fatal编程技术网

Javascript Express是否每次请求都会运行app.js?

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

我正在用非常标准的东西构建一个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);
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)和