Javascript 使用路由参数直接链接到URL
我有一个问题,当我有一个直接链接到一个页面,它后面有一个参数。从网页的链接工作。我正在开发一个博客应用程序 本地主机/博客加载正确。在那个页面上,我有一个指向localhost/blog/文章名称的链接。该链接将正确加载。问题是当我刷新文章页面的/blog/name或直接转到它时。它会坏掉,不会装任何东西 chrome中的Javascript控制台只为所有Javascript文件提供了错误“uncaughtsyntaxerror:Unexpected token<”。当url有尾随/时,我也有这个问题,这似乎是angular的常见问题。但不确定是否相关 我的路线的相关部分Javascript 使用路由参数直接链接到URL,javascript,angularjs,Javascript,Angularjs,我有一个问题,当我有一个直接链接到一个页面,它后面有一个参数。从网页的链接工作。我正在开发一个博客应用程序 本地主机/博客加载正确。在那个页面上,我有一个指向localhost/blog/文章名称的链接。该链接将正确加载。问题是当我刷新文章页面的/blog/name或直接转到它时。它会坏掉,不会装任何东西 chrome中的Javascript控制台只为所有Javascript文件提供了错误“uncaughtsyntaxerror:Unexpected token
app.config(['$routeProvider','$locationProvider',
function($routeProvider,$locationProvider){
$routeProvider.
when('/',{
templateUrl: '/partials/home.html',
controller: 'HomeController as HomeCtrl'
}).
when('/home',{
templateUrl: '/partials/home.html',
controller: 'HomeController as HomeCtrl'
}).
when('/blog',{
templateUrl: '/partials/blog.html',
controller: 'BlogController as blogCtrl'
}).
when('/blog/:name', {
templateUrl: '/partials/article.html',
controller: 'ArticleController as articleCtrl'
}).
otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
}]);
我正在为服务器使用Node/Express,为angular应用程序使用api
app.use('*', function(req, res){
res.sendFile(__dirname + '/public/index.html');
console.log('page loaded');
});
我还有/api/contact和/api/article的路由。我假设默认的html页面,比如说
index.html
位于根目录下,所有其他依赖项都在/src
中。这将有你的所有部分,javascript文件,css等
您应该以这样的方式配置express服务器:对于所有以www.example.com/src
为目标的请求,它应该在根目录的/src
文件夹中查找资源。下面的配置行将告诉express这样做
var staticDirectory = "/src";
app.use('/src', express.static(__dirname + staticDirectory));
所有其他请求都应该返回index.html
以这种方式配置express
服务器将使其为所有不以/src
为目标的请求返回index.html
。如果您有任何其他包含静态内容的文件夹,您可以将express
配置为与/src
相同的方式使用它们
最后,您的express
配置文件应该如下所示
var express = require('express');
var app = express();
var staticDirectory = "/src";
app.use('/src', express.static(__dirname + staticDirectory));
app.get('/*', function(req,res){
res.sendFile(__dirname + '/index.html');
});
app.listen(9000, function(){
console.log('Express server is listening on 9000. Yayy!');
})
我相信这会解决你的问题。我用电脑测试了一下。知道发生了什么事。我能够看到angular应用程序从不同的路径向服务器发出请求,而后面有一个斜杠或额外的参数/blog/article请求/blog/javascripts、/blog/stylesheets等中不存在的所有文件 添加
<base href="/index.html">
到index.html文件修复了该问题
在这里的答案中可以找到您使用哪台服务器来提供文件?是否将其配置为允许重定向到根页面?我相信问题出在服务器端。我也在用AngularUI和NodeJS Express服务器写JS博客。您的服务器可能正在为404页面提供请求服务。因此,您得到了“意外令牌”错误。我实际上也在为服务器使用express/node。不过,还有一些其他页面可以使用。正常工作的“关于”和“联系”窗体。不过,那些车上的拖尾也不起作用/联系工作。直接链接到/联系/不会。我会将我的快速路线代码添加到问题中。我的服务器文件在根文件夹中。我所有的东西,包括index.html都放在一个名为pubic的文件夹中。公用文件夹中有bower、partials、javascripts和样式表。我尝试将index.html放在根文件夹中,并使用/public而不是/src。我犯了很多错误,包括同样的错误。确实让我发现,使用express和angular,你需要重写url,所以我将进一步研究这一点,看看它是否解决了问题。以解决方案中的方式处理问题将解决问题。如果我能帮忙,请告诉我。