Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 expressnodejs中的HTTP请求_Javascript_Node.js_Http_Express - Fatal编程技术网

Javascript expressnodejs中的HTTP请求

Javascript expressnodejs中的HTTP请求,javascript,node.js,http,express,Javascript,Node.js,Http,Express,我有以下代码来自: 转到localhost:8080/hola,它不会加载本地主机:8080工作正常self.init()。问题似乎是以下调用的函数: Server.prototype.initMiddleware = function() { var self = this , conf = this.conf; this.use(function(req, res, next) { var setHeader = res.setHeader; res.set

我有以下代码来自:

转到
localhost:8080/hola
,它不会加载<代码>本地主机:8080工作正常
self.init()。问题似乎是以下调用的函数:

Server.prototype.initMiddleware = function() {
  var self = this
    , conf = this.conf;

  this.use(function(req, res, next) {
    var setHeader = res.setHeader;
    res.setHeader = function(name) {
      switch (name) {
        case 'Cache-Control':
        case 'Last-Modified':
        case 'ETag':
          return;
      }
      return setHeader.apply(res, arguments);
    };
    next();
  });

  this.use(function(req, res, next) {
    return self._auth(req, res, next);
  });

  this.use(term.middleware());
  this.use(this.app.router);
  this.use(express.static(__dirname + '/../static'));
};
根据
express.js
文档:

// a middleware sub-stack which prints request info for any type of HTTP request to /user/:id
app.use('/user/:id', function(req, res, next) {
  console.log('Request URL:', req.originalUrl);
  next();
}, function (req, res, next) {
  console.log('Request Type:', req.method);
  next();
});

因此,第一个
app.get
和其他
app.use之间似乎存在“冲突”。请使用
this.use
。我如何解决这个问题呢?

这是因为您没有返回任何内容,然后浏览器会对此进行轮询,直到它返回一些内容

this.app.get("/hola", function(req, res) {
    res.writeHead(200, {'content-type':'text/html'});
    res.end('/*html code here*/');
  });

self.init()
在app.get(…)
外部调用时返回很多东西
self.init()。最后,我得到一个输出。问题是,对于
app.get
,它不起作用。@user2979409“
self.init()
返回很多东西”它不起作用,因为它没有
return
语句。它可能会将大量内容打印到控制台,或执行许多其他副作用操作,但它不会返回任何内容。函数表达式调用(如
self.init()
的值是被调用函数的
返回值。@apsillers,如果没有返回任何内容,为什么我会在浏览器中看到“打印”的bash控制台?(
self.init
调用外部
app.get(…)
。我想要的是调用
self.init
或调用
app.get('/',function(){self.init()});
的相同输出。
我不同意。但我认为在这种情况下,我看不到这些方法在做什么,因为您没有设置它们:
if(this.conf.localOnly)this.initLocal();this.initMiddleware();this.initRoutes();this.initIO()
@user2979409函数的
return
值与打印到控制台的副作用有什么关系?如果不调用
return
,则没有定义的
return
值。可以在函数中调用
console.log
,而不在该函数中调用
return
。(例如,定义一个函数:
function foo(){console.log(“我是一个日志语句!”);}
,然后调用它:
var result=foo();
当您记录
result
的值时,请注意它是
未定义的
。返回值与函数所做的任何其他事情无关。)你真的只想让
localhost:8080/hola
localhost:8080/
一样工作吗?你可以简单地将
static/index.html
复制到
static/hola
中,然后将索引文件复制到另一个文件中。Express服务器直接从
/static>提供终端应用程序的静态html文件夹;您正在修补的服务器端逻辑只指定如何响应来自静态HTML客户端的请求,而不是如何将基本客户端代码发送到浏览器。为了帮助您了解实际问题,
self.init()
这里设置了服务器端逻辑。基本上,您这样做是为了在主页(
/
)工作之前需要访问
/hola
,但是访问
/hola
本身不做任何其他事情(除了使应用程序工作)。只是这不是真的,因为您已经运行了
self.init()
app.get('hola')
监听器之外(使用
iniciar()
),所以访问
/hola
完全没有任何作用。@apsillers,关于您的评论,您建议
this.get(“/”,函数(res){iniciar();})
和删除
self.init
外部
app.get
会起作用。但它不是。执行此操作:1.将代码放回找到它的方式(现在)。您不需要更改服务器端逻辑来完成所需的操作,并且在您的安装程序正常运行之前,此表单可能会停止工作。2.将
static/index.html
复制到一个新文件中,
static/hola
。3.在浏览器中加载
localhost:8080/hola
。好的,@apsillers,它不起作用。我的目标是设置此应用程序的更安全登录,例如。因此,当登录成功时,我需要passport使用
get
重定向用户。
this.app.get("/hola", function(req, res) {
    res.writeHead(200, {'content-type':'text/html'});
    res.end('/*html code here*/');
  });