对不起,我对节点有点新意。我已经坚持了几个小时。
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”))); 但我意识到现在改变我的解决方案会更好。
答案 0 :(得分:1)
是staff/test
,静态资产是否位于资源文件夹中?
如果它们是静态资产,则资产文件夹中的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)
})
答案 1 :(得分:1)
试试这个:
app.get('*/*', function(req, res){
res.sendFile(path.resolve(templatesPath + 'index.html'));
});