node . js,Express:没有找到动态路由上的静态资源
Node.js & Express: Static assets on dynamic routes aren't found
我对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,我的静态资产出现不渲染。所有资源都以路径http://localhost/763/css/style.css开头(仅第一个ID)。理想情况下,我希望它指向http://localhost/css/style.css,而不管路由如何。
我已经尝试删除EJS文件中的前导斜杠,使用res.sendfile,并将资产硬编码为完全绝对路径,但第一和第二个选项不起作用,第三个选项不理想。
请注意,我自己的项目代码包含以下内容,但在public之前没有初始斜杠:
app.use(express.static(path.join(__dirname, 'public')));
你可以试着去掉开头的斜杠。
相关文章:
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- 在angularjs中动态路由url路径
- express js中具有不同功能的动态路由
- ASP.NET MVC路由-动态加载.js脚本
- 如何在 html 页面上动态添加路由到脚本 src
- Emberjs:动态模板嵌套和路由
- 如何构造用于骨干路由的动态url
- 动态添加/注册AngularJS控制器,无需路由
- 使用ui路由器实现动态URL路由的最佳方式是什么
- angular ui:ui路由器动态路由和状态
- Slick Carousel在应用程序动态路由的基础上不起作用
- 动态路由PHP&AngularJS
- json动态菜单和路由
- AngularJs 中的动态路由
- AngularJS - 使用 UI-Router 进行动态路由
- 具有动态路由和动态依赖性的角度模块化
- 角度 UI 路由器 - 使用路由传递动态数据
- Expressjs 动态路由问题
- 在 AngularJS 中设置具有动态路由和模板的 12 个产品页面的最佳方式
- AngularJS——基于路由动态加载外部JS