我在Angular js中使用了routeProvider和stateProvider,HTML5模式为true。 在刷新页面之前,一切正常。
我正在使用Node.js服务器,我没有得到在服务器端写的内容,所以我没有得到“找不到”错误。
请帮助我,我没有得到其他类似帖子的任何答案。
这是状态提供者的代码
$stateProvider
.state("/", angularAMD.route({
url: '/',
templateUrl: 'Default/default.html'
}))
.state("aboutUs", angularAMD.route({
url: '/aboutUs',
templateUrl: 'AboutUs.html'
}))
.state("contactUs", angularAMD.route({
url: '/contactUs',
templateUrl: 'ContactUs.html'
}))
.state("order", angularAMD.route({
url: '/order',
templateUrl: 'order/order.html',
controllerUrl: "order/OrderController"
}))
.state("signin", angularAMD.route({
url: '/signin',
templateUrl: 'LoginSignup/Login.html',
controllerUrl: "LoginSignup/LoginController"
}))
.state("dashboard", angularAMD.route({
url: '/dashboard',
templateUrl: 'Dashboard/dashboard.html',
controllerUrl: "Dashboard/dashboardController"
}))
.state("thankYou", angularAMD.route({
url: '/ThankYou.html',
templateUrl: 'ThankYou.html'
}));
$urlRouterProvider.otherwise("/");
$locationProvider.html5Mode(true);
答案 0 :(得分:3)
我在nodejs服务器上用Express.js修复了我的应用程序。
// ### CATCH REFRESH TO INDEX ###
app.all('/*', function(req, res, next) {
// Just send the index.html for other files to support HTML5Mode
res.sendFile('public/index.html', { root: __dirname });
});
它查找页面刷新的正确位置。
答案 1 :(得分:0)
您需要在刷新时使用角度代码加载索引文件,就像Joe Lloyd所说。为了允许您的其他路由工作(返回数据的路由),您可以检查它们并调用下一个函数(如果匹配)。这是一个例子:
app.use((req, res, next) => {
// if the requested route matches a route that should return data then
// we check for it here and call the next function and return, which will skip over serving the index.html page
if(req.url.indexOf('/get-data-route')){
return next();
}
// if the route does not match an API route serve the index file
// this is using a template string, if you are using an older version of node
// replace the template string with a regular string
res.sendFile(`${__dirname}/index.html`);
});