2017-06-22 66 views
0

我有一个关于app.get() Express的问题。只要路径末尾有.html,函数似乎就不会被调用。在下面的代码片段中,如果我尝试去/random/example,但是当我去/index.html时,"test"被写入控制台。那么当我进入主页时,如何让它调用函数呢? (我以“/”作为尝试的路径,它并不能工作。)Node.js express app.get()奇怪的行为

app.use(express.static("public")) 

app.get('/index.html',function(req,res){ 
    console.log("test"); 
}) 

app.get('/random/example',function(req,res){ 
    console.log("test"); 
}) 
+0

您是否在某处定义了'app.static'? – GilZ

+0

我已将您的问题中的堆栈片段转换为代码块。例如,Stack Snippets可以在代码片段窗口中运行(例如,在浏览器上)。仅适用于服务器端的代码不应该放在Stack Snippet中。 –

+0

也许你的index.html(像大多数静态资源一样)缓存在浏览器中,然后没有从服务器明确请求 –

回答

0

你没有看到"test"/index.html,因为这个过程是你由静态文件处理被处理。

如果你想让你的代码叫做有静态处理,你需要在设置静态处理之前定义你的路由。您的路线,然后有效地中间件,并可以调用next传授给处理的下一层,这将是静态的处理之前做处理:

var express = require('express'); 
var app = express(); 

// Set this up first 
app.get('/index.html',function(req,res, next){ 
    console.log("test - /index.html"); 
    next(); // <== Let next handler (in our case, static) handle it 
}); 

app.get('/random/example',function(req,res){ 
    console.log("test /random/example"); 
}); 

// Now define static handling 
app.use(express.static("public")); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!') 
}); 

这在get一个链接到Middleware callback function examples提及。

注意:如果您只想将index.html传送到浏览器,则无需这样做。如果您希望在将请求交给静态文件处理之前进行请求,那么您只需执行此操作。

+0

谢谢,这非常有帮助。 – Torstein97