Nodejs Express保持为所有请求提供相同的文件

时间:2015-07-07 11:45:01

标签: node.js

所以我有一个快速的应用程序,在 app.js 我有这个:

app.use('/index', function (req, res, next){
    res.sendFile(__dirname+'/index.html');
   }

app.get('/script.js',function(req,res){
    res.sendFile(__dirname+'/public/script.js');

启动服务器并输入 localhost:3000 / index 后,应用程序运行正常,但问题出现了.. 当我将第一个 app.use()功能更改为:

app.use('/', function (req, res, next){}

这样我就不必在网址中输入索引部分,所有下一个获取请求都会回复 index.html 页面并尝试添加

res.end(); after res.sendFile();

但之后没有其他回复被发送,我该如何解决?

1 个答案:

答案 0 :(得分:1)

您的/路由充当通配符并捕获所有请求,这意味着任何与此路由之前定义的路由不匹配的内容都将被其捕获。你有两个选择:

  1. app.use更改为app.get,以便您明确仅匹配/(并且只能使用GET方法)
  2. 将路线移至所有路线的底部
  3. 正如app.use here的Express.js API文档所述:

      

    路径将匹配任何路径,该路径紧跟其路径后面带有“/”。例如:app.use('/ apple',...)将匹配“/ apple”,“/ apple / images”,“/ apple / images / news”等等。