Angular Express在刷新

时间:2016-02-07 19:50:32

标签: javascript angularjs node.js express

我正在研究这个小的MEAN堆栈应用程序,当我点击我的imaged它显示部分带有它的图像信息,一切正常,但刷新角度尝试从错误的URL获取app.js文件:示例: http://localhost:3000/image/56afc07d5e1fea4839791b55它向http://localhost:3000/image发送get请求,这是错误的,因此无法找到Angular app.js文件。

我如何在Node中提供静态文件:

app.use(express.static(path.join(__dirname, '/public')));
app.use('/bower_components',  express.static(__dirname + '/bower_components'));
app.use('/node_modules',  express.static(__dirname + '/node_modules'));
app.use('/uploads', express.static(__dirname + "/uploads"));

app.get('/*', function(req, res) {
  res.sendFile(__dirname +'/public/index.html');
});

这是Angular app.js中的路由:

app.config(function(
    $routeProvider, 
    $locationProvider) {

    $routeProvider
    .when('/', {
        templateUrl: '/partials/main.html',
        access: {restricted: false}
    })
    .when('/signup', {
        templateUrl: '/partials/signup.html',
        controller: 'authCtrl',
        access: {restricted: false}
    })
    .when('/login', {
        templateUrl: '/partials/login.html',
        controller: 'authCtrl',
        access: {restricted: false}
    })
    .when('/gallery', {
        templateUrl: '/partials/gallery.html',
        controller: 'authCtrl',
        access: {restricted: true}
    })
    .when('/image/:id', {
        templateUrl: '/partials/imageView.html',
        controller: 'imageViewCtrl',
        access: {restricted: true}  
    })
    .otherwise({
        redirectTo: '/'
    });

更新

只有在使用param刷新页面时才会出现问题,例如:localhost:3000 / image / id。在localhost:3000 / image上刷新时没问题,当在localhost:3000 / image / id和我重新加载页面时,它尝试从localhost:3000 / image而不是localhost:3000

获取数据

1 个答案:

答案 0 :(得分:0)

我的错误是非常愚蠢的。 Express正确地路由应用程序,但是在我添加的index.html文件中

Angular的app.js文件:

<script type="text/javascript" src="app.js"></script>

在app.js之前没有"/"因此如果网址更长,那么 localhost:3000 / gallery 例如:

localhost:3000 / gallery / image Angular正在尝试相应地下载app.js localhost:3000 / gallery。

将app.js脚本添加到index.html

的正确方法
<script type="text/javascript" src="/app.js"></script>