故事:
我用2个GET方法创建了一个ExpressJS应用程序。第一个用于呈现index.html,另一个用于返回JSON模拟数据。
问题:
在浏览器上打开URL(预期会返回JSON模拟数据),应用程序继续呈现我的index.html。
依赖关系:
“棱角分明”:“^ 1.5.8”
“棱角动画”:“^ 1.5.8”
“棱角咏叹调”:“^ 1.5.8”
“棱角材料”:“^ 1.1.3”
“angular-messages”:“^ 1.5.8”
“棱角消毒”:“^ 1.5.8”
“angular-ui-router”:“^ 0.4.2”
“ejs”:“^ 2.5.6”
“表达”:“^ 4.15.2”
代码:
app.js
var express = require("express");
var app = express();
var port = 3000;
app.engine(".html", require("ejs").__express);
app.set("views", __dirname + "/views");
app.set("view engine", "html");
app.use(express.static(__dirname));
app.get("*", function(request, response) {
response.render("index");
});
app.get(“/get-mock-data”, function(request, response) {
var mockData = {
“name” : “Michael Ardan”,
“gender” : “M”,
“birthday” : “2017-01-01”,
“other_details” : “chubby”
};
response.send(mockData);
});
app.listen(port, function() {
console.log("Listening on port " + port);
});
my-angular-app.js
angular.module(“TestApp” , [
"ui.router",
"ngMaterial"
])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
})
.config(function($stateProvider, $urlRouterProvider){
var homeState = {
"name" : "home",
"url" : "/home",
"templateUrl" : "views/home.html"
};
var aboutState = {
"name" : "about",
"url" : "/about",
"templateUrl" : "views/about.html"
“controller” : “AboutController”
};
$urlRouterProvider.otherwise("/home");
$stateProvider.state(homeState);
$stateProvider.state(aboutState);
});
其他详情:
- 我试图改变
app.get("*", function(request, response) {
response.render("index");
});
到
app.get("/", function(request, response) {
response.render("index");
});
虽然这适用于我,但我无法直接在浏览器上访问http://localhost:3000/about。相反,服务器继续返回“无法获取/关于”。我必须从http://localhost:3000访问该页面,然后从那里单击“关于”。
答案 0 :(得分:1)
实际上,我没有足够的知识直接解释它,但您的GET请求应该发送到index.html,而不是Express应用程序。一切都与Html5Mode有关。
您的问题也有相同的案例和解决方案:How to use AngularJS routes with Express (Node.js) when a new page is requested?
答案 1 :(得分:1)
Express将呈现与您的“查询”匹配的第一条路线。您在模拟数据之前使用默认/全部路径 。切换订单,一切都会正常工作。
这样做:
app.get(“/get-mock-data”, function(request, response) {
var mockData = {
“name” : “Michael Ardan”,
“gender” : “M”,
“birthday” : “2017-01-01”,
“other_details” : “chubby”
};
response.send(mockData);
});
app.get("*", function(request, response) {
response.render("index");
});