无法让二级路线在快递中工作

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中工作正常

节点,快递 - 无法获取路线

基本特快路线

setParams无法在react-native中工作

requestLocation() 无法提供有关手表硬件的课程,但在 Sim 中工作

Laravel 5:如何获取所有路线的路径?