Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 Node.js&;Express:动态路由上的静态资源不是';找不到_Javascript_Node.js_Express_Routes_Ejs - Fatal编程技术网

Javascript Node.js&;Express:动态路由上的静态资源不是';找不到

Javascript Node.js&;Express:动态路由上的静态资源不是';找不到,javascript,node.js,express,routes,ejs,Javascript,Node.js,Express,Routes,Ejs,Node.js是如何服务静态资产的。我正在使用最新的Express、EJS和Node。我的应用程序中有以下路径(为了简洁起见,删除了一些代码,还有其他没有参数的路径)。我在S.O.搜索过类似的问题,但我觉得我的问题可能不同,因为有两个参数 app.set('view engine', 'ejs'); app.use(express.static(__dirname + '/public')); ... app.get('/:userid?/:catid?', function(r

Node.js是如何服务静态资产的。我正在使用最新的Express、EJS和Node。我的应用程序中有以下路径(为了简洁起见,删除了一些代码,还有其他没有参数的路径)。我在S.O.搜索过类似的问题,但我觉得我的问题可能不同,因为有两个参数

app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
    ...
    app.get('/:userid?/:catid?', function(req, res){
    ... some db queries here ...
        res.render('pages/listing',{
            siteConfig: nconf.get("siteConfig"),
            pageTitle: pageTitle,
            results:dbResults
       });
    }
在EJS视图模板中,我有如下资产路径:

<img src="/images/static_logo.png" />
<script src="/bower_components/modernizr/modernizr.js"></script>
<link rel="stylesheet" href="/css/app.min.css" />

当我将这两个id都传递给这个路由时,问题就出现了,比如localhost/763/201,我的静态资产似乎没有呈现。所有资源都以路径763开始(仅第一个ID)。理想情况下,我希望它指向任何路线


我已尝试使用res.sendfile删除EJS文件中的前导斜杠,并将资产硬编码为完全绝对路径,但第一个和第二个选项不起作用,第三个选项也不理想。

只需注意,我自己的项目代码包括以下内容,在公开之前没有初始斜杠:

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

也许值得一试,把你的第一个斜杠删掉,试试看。

在:userid?中的“?”是什么意思,在路由器中不需要使用“?”。谢谢你,迈克尔,我不敢相信我这么多次地掩饰了这一行。你会惊讶于一个字符的威力。哈