Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用路由参数直接链接到URL_Javascript_Angularjs - Fatal编程技术网

Javascript 使用路由参数直接链接到URL

Javascript 使用路由参数直接链接到URL,javascript,angularjs,Javascript,Angularjs,我有一个问题,当我有一个直接链接到一个页面,它后面有一个参数。从网页的链接工作。我正在开发一个博客应用程序 本地主机/博客加载正确。在那个页面上,我有一个指向localhost/blog/文章名称的链接。该链接将正确加载。问题是当我刷新文章页面的/blog/name或直接转到它时。它会坏掉,不会装任何东西 chrome中的Javascript控制台只为所有Javascript文件提供了错误“uncaughtsyntaxerror:Unexpected token

我有一个问题,当我有一个直接链接到一个页面,它后面有一个参数。从网页的链接工作。我正在开发一个博客应用程序

本地主机/博客加载正确。在那个页面上,我有一个指向localhost/blog/文章名称的链接。该链接将正确加载。问题是当我刷新文章页面的/blog/name或直接转到它时。它会坏掉,不会装任何东西

chrome中的Javascript控制台只为所有Javascript文件提供了错误“uncaughtsyntaxerror:Unexpected token<”。当url有尾随/时,我也有这个问题,这似乎是angular的常见问题。但不确定是否相关

我的路线的相关部分

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,所以我将进一步研究这一点,看看它是否解决了问题。以解决方案中的方式处理问题将解决问题。如果我能帮忙,请告诉我。