无法让二级路线在快递中工作
Posted
技术标签:
【中文标题】无法让二级路线在快递中工作【英文标题】:Can't get second level routes working in express 【发布时间】:2015-11-06 16:50:31 【问题描述】:很抱歉,我对 node 很陌生。我已经坚持了几个小时了。
server.js
app.use(express.static(__dirname + "/public"));
app.get('/', function(req, res)
res.sendFile(path.resolve(templatesPath + 'index.html'));
);
app.get('*', function(req, res)
res.sendFile(path.resolve(templatesPath + 'index.html'));
);
index.html 是一个 Angular 应用程序。我的第一级路由使用 Angular 的 HTML5 路由可以正常工作,例如。 “http://lh:3000/staff”或“http://lh:3000”
但是如果我添加另一个级别或路由参数,例如“http://lh:3000/staff/”或“http://lh:3000/staff/test”Express 似乎忽略了 express.static,而是使用 get 通配符将我的所有文件转换为 index.html,因此我的分页符。
感谢您的帮助回答者
在二级路由中,它正在加载 index.html 中引用的资源,相对于二级路由。我的临时解决方案是添加: app.use('/files/',express.static(path.join(__dirname + "/public"))); 但我现在意识到最好改变我的解决方案。
【问题讨论】:
【参考方案1】:是staff/test
,静态资产位于您的资产文件夹中吗?
如果它们是静态资产,则资产文件夹内的人员/测试路径中必须有一个文件。
如果它们不是静态资产并且它们是动态内容,请考虑使用express.router
,为staff
制作一个路由器并将其添加为,
var staff = express.Router();
staff.use('/staff', staff)
//this is route handler for /staff/test
staff.post('/test', function(req, res, next)
res.json(some-json-content)
)
【讨论】:
谢谢,我不知道路由器。我现在需要睡觉,但我会在明天研究它并在我想出它时发布我的答案【参考方案2】:试试这个:
app.get('*/*', function(req, res)
res.sendFile(path.resolve(templatesPath + 'index.html'));
);
【讨论】:
以上是关于无法让二级路线在快递中工作的主要内容,如果未能解决你的问题,请参考以下文章
当试图直接访问它们时,React网站w /表示不在生产中加载路由,在dev中工作正常