无法获得在快速

时间:2015-08-13 15:50:29

标签: angularjs node.js express

对不起,我对节点有点新意。我已经坚持了几个小时。

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”))); 但我意识到现在改变我的解决方案会更好。

2 个答案:

答案 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'));
});