2013-06-10 2 views
3

약간의 혼동이 있습니다. Nodejs 사용angularjs index.html보기 폴더

폴더 구조 이미지가 첨부되어 있습니다.

클라이언트 폴더의 루트에 index.html을 넣으면 모든 것이 잘 작동합니다.

반면에 js 파일보다 이미지에서와 같이 views.html을 이동하면 index.html이로드되지만 j.h 파일은로드되지 않습니다.

Nodejs은 -

app.configure(function() { 
    app.set('port', process.env.PORT || 3000); 

    app.use(express.favicon()); 
    app.use(express.cookieParser()); 
    app.use(express.bodyParser()); 
    app.use(express.logger('dev')); //tiny, short, default 
    app.use(express.methodOverride()); 
    app.use(express.cookieSession({secret: "sdfr"})); 

    //app.set('views', __dirname + '/client/views/'); 
    app.use(express.static(__dirname + '/client/views')); 

}); 

server.js

app.config(['$routeProvider', function ($routeProvider) { 

     $routeProvider.when('/', 
      { 
       templateUrl: 'partials/home.html', 
       controller: 'HomeCtrl' 
      }); 
     $routeProvider.when('/login', 
      { 
       templateUrl: 'partials/login.html', 
       controller: 'LoginCtrl' 
      }); 
     $routeProvider.when('/register', 
      { 
       templateUrl: 'partials/register.html', 
       controller: 'RegisterCtrl' 
      }); 

     $routeProvider.when('/404', 
      { 
       templateUrl: 'partials/404.html' 
      }); 
     $routeProvider.otherwise({redirectTo: '/404'}); 

     //$locationProvider.html5Mode(true); 

    }]) 

index.html을

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html ng-app="contactManager"> 
<head> 
    <meta charset="utf-8"> 
    <title>Angular Demo</title> 
</head> 

<body> 


<a href="#/">Home</a><br/> 
<a href="#/login">Login</a><br/> 
<a href="#/register">Register</a><br/> 
<a href="#/private">Private</a><br/> 
<a href="#/admin">Admin</a><br/> 
<a href="#/404">404</a><br/> 

<div> 
    <div ng-view></div> 
</div> 

<script src="../lib/vendor/angularjs/1.1.5/angular.min.js"></script> 

<script src="../js/app.js"></script> 
<script src="../js/controllers.js"></script> 

</body> 

을 app.js 현재 당신이 express.static에서 JS 포함되지 않습니다

Error

+0

가 왜'대체 app.set 않았다 ('보기'..)'app.use (express.static ...)''로 - 주석 app.js의 코드? – callmekatootie

+0

@callmekatootie, 해당 코드는 server.js에 있습니다. 나는 검사하고 있었지만 app.set ('views'..) 서버를 사용하지 않았고 응용 프로그램을로드 할 수 없습니다. – Pirzada

답변

3

. client/viewsexpress.static에 의해 제공되는 유일한 디렉토리이므로 index.html 파일의 ../js에있는 JS 소스가 아무데도 나가지 않습니다.

정적으로 전체 클라이언트를 포함시켜야합니다. 그렇지 않으면 정적 공급자에 각 디렉터리를 포함시켜야합니다.

app.use(express.static(__dirname + '/client/views'));은/client/views에서 아무것도 제공하지 않지만 해당 디렉토리의 외부는 아무것도 표시하지 않는다는 것을 의미합니다.

app.use(express.static(__dirname + '/client/js'));은 JS 폴더를 제공 할 수 있지만 루트에서는 액세스 할 수 있습니다. 두 개의 정적 공급자를 사용할 수 있지만 충돌이 발생하면 첫 번째 공급자가 우선적으로 이깁니다. 당신은 또한 yoursite.com/js에있는 클라이언트/js에 액세스 할 수있는 app.use(express.static('/js', __dirname + '/client/js'));을 할 수 있지만 그것은 저에게 이상하게 보입니다.

여기 express.static 사용하여 최대 읽기 : http://expressjs.com/api.html#middleware

+0

내가 app.use를 사용한다면 (express.static (path.join (__ dirname, 'client')))); Client 폴더의 루트에 index.html을 넣을 때까지 응용 프로그램이 작동하지 않는 것보다. index.html이 views 폴더에있는 것처럼 어디에서든지 우리는 index.html의 위치에 앱을 시작해야한다고 말해야합니다. 내가 맞습니까? – Pirzada

+0

index.html을 루트로 옮길 때 index.html 파일의 경로를 변경하고 있습니까? 보기에 남겨두면 yoursite.com/views/index.html을 통해 액세스해야합니다. 뷰에 index.html을두고 루트에 두려면 여러 개의 expess.statics를 사용하고 뷰를 FIRST에 놓아야합니다. 그런 다음 statis가 경로를 갖도록 수정하십시오. ''app.use ('js', express.static (__ dirname + '/ client/js'));''app.use (표현식 정적 (__ 디렉토리 이름 + '/ 클라이언트 /보기' ('lib', express.static (__ dirname + '/ client/lib'));'그런 다음 include 참조가'../ js '대신'js'를 참조하도록하십시오. –