如何在node.js中获取/和/:someText?

时间:2017-10-04 11:53:34

标签: node.js express

List

我正在获取两者的输出,但没有获得该 app.get('/',function(req,res,next){ app.use(express.static(html file); next(); }); app.get('/:someText',function(req,res){ var x = req.params.someText; res.send(x); }); 文件的CSS。

2 个答案:

答案 0 :(得分:2)

正如我从代码中看到的那样,你错过了发送get /。

app.get('/',function(req,res,next){
   //something
   //in here add res.send() and all OK.
});

选中此项以了解下一步是什么。

What is the parameter "next" used for in Express?

答案 1 :(得分:0)

您使用express.static的方式不对。你不应该传递一个文件来返回,即sendFileexpress.static用于提供整个目录,应该在get处理程序之外调用。

例如,这会在URL的根目录中提供名为public的目录。对未找到的文件的任何请求都将通过中间件/路由器链传递给下一个处理程序:

app.use(express.static(path.join(__dirname, 'public')));

重要的是,这应该在您致电app.getapp.post等之前出现,而不是在处理程序内。

因此,如果您在public/myfile.html处有一个文件,该文件将在http://localhost:3000/myfile.html处提供,我认为您的服务器位于localhost:3000。如果您想为网址添加额外的路径部分,例如http://localhost:3000/stat/myfile.html那将是:

app.use('/stat', express.static(path.join(__dirname, 'public')));

如果您想提供单个文件,那么您可以使用sendFile,有点像这样:

app.get('/myfile.html', function(req, res) {
    res.sendFile(path.join(__dirname, '/myfile.html'));
});

请注意,这会挑出特定文件,因此需要单独处理CSS等资源。如果HTML,CSS等都在同一个文件夹中,那么使用express.static代替整个目录是有意义的。

值得注意的是,express.static有一个名为index的设置,如果有'/'请求,则默认提供名为index.html的文件。进一步阅读: