Javascript 对从AJAX发送到我的Express服务器的请求路径感到困惑

Javascript 对从AJAX发送到我的Express服务器的请求路径感到困惑,javascript,jquery,node.js,express,web,Javascript,Jquery,Node.js,Express,Web,我有一个Node.js Express服务器的基本设置 我正在尝试使用以下路由处理程序使用res.sendFile提供html文件: router.get('/:run_id/:test_num',function(req,res,next){ var runId = req.params.run_id; var testNum = req.params.test_num; res.sendFile(path.resolve('results',runId,testN

我有一个Node.js Express服务器的基本设置

我正在尝试使用以下路由处理程序使用
res.sendFile
提供html文件:

router.get('/:run_id/:test_num',function(req,res,next){

    var runId = req.params.run_id;
    var testNum = req.params.test_num;

    res.sendFile(path.resolve('results',runId,testNum),{
        maxAge:'58h'
    });

});
在我的app.js文件中,我有一个中间件

app.use('/results', require('./routes/results'));
问题是请求的路由方式如下:

  pathname: '/results/results/1450830953375/test6.txt',
  path: '/results/results/1450830953375/test6.txt',
  href: '/results/results/1450830953375/test6.txt' 
所以问题是它是
/results/results/
,而不仅仅是
/results

我使用的是RequireJS,包含要请求的文件数据的模块如下所示:

    define('SumanTestFiles',function(){
            return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]);
     });
然后我循环遍历每个文件路径,并使用jQuery/AJAX从服务器请求它:

define(['SumanTestFiles'],function(stf){

    stf.forEach(function (testPath) {
        $.get(testPath).done(function (msg) {...
因此,您可以看到testpath没有被篡改,它们毫无疑问只是“results/1450830340344/test5.txt”之类的内容

所以我的问题是,为什么路径显示在我的服务器上,路径中有两个相邻的“results”字符串实例

这没有多大意义,因为请求应该是

/结果/1450830953375/test6.txt

不是

/results/results/1450830953375/test6.txt


有人有什么想法吗?谢谢

这对我来说是新的,因为我对web开发还比较陌生

简而言之,答案不是这样:

  define('SumanTestFiles',function(){
            return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]);
     });
我需要这样做

  define('SumanTestFiles',function(){
            return new Object(["/results/1450830340344/test5.txt","/results/1450830340344/test6.txt"]);
     });

否则,到我的服务器的AJAX请求路径将相对于搜索栏中的URL,而不是绝对路径。真是糟糕透了。你在哪里记录请求路径?谢谢,它正在服务器上记录,服务器输出是上面的3行(路径名,路径,href),我相信如果你更改
path.resolve('results',runId,testNum)
path.resolve(runId,testNum)
可能会起作用。它正在尝试解析路径
/results/runId/testNum
,但您已经路由了
/results
。不是100%确定为什么这是一条评论。谢谢,继续做下去,这是一条非常奇怪的评论好吧,我想出来了,将发布一个答案或删除这个问题,这取决于它有多有用,很好,还有+1。因为我没有更好的事情要做,所以我想指出,将数组传递给对象的构造函数调用绝对没有任何作用。构造函数将返回数组本身而不复制它,因此您可以完全删除构造函数调用。谢谢,我只在IDE中为语法高亮显示而执行“新对象”操作:)我认为如果参数已经是对象类型,则新对象构造函数基本上是不可操作的,因此您是对的,我可能会删除新对象调用