2014-11-30 3 views
0

Моя структура приложение выглядит как этотОшибка перекрестного происхождения. Конфигурация файла grunt?

-client 
    - dist 
    - directives 
    - services 
    - controllers 
    - partials/ 
      state1.tpl.html 
      state2.tpl.html 
    - index.html 
    - app.js 
    - bower_components 
     - angular.js 
     - jquery.js 
     - etc 
    - Gruntfile.js 

Как вы, наверное, заметили .. нет ничего фантастического выше.

Чтобы собрать все и положить его в папку назначения, я написал простой GruntFile, который выглядит, как показано ниже:

grunt.initConfig ({ упак: grunt.file.readJSON («package.json»),

clean: ["./dist"], 

copy: { 
    main: { 
     src: ['src/index.html', 'src/**/*.tpl.html'], 
     dest: 'dist/', 
    }, 
}, 

concat: { 
    options: { 
     seperator: ';' 
    }, 
    css: { 
     src: ['./bower_components/bootstrap/dist/css/bootstrap.css', './css/app.css'], 
     dest: 'dist/app.css' 
    }, 
    jquery_lib: { 
     src: ['./bower_components/jquery/dist/jquery.js', './bower_components/bootstrap/dist/js/bootstrap.js'], 
     dest: 'dist/jquery_lib.js' 
    }, 
    angular_lib: { 
     src: ['./bower_components/angular/angular.js', './bower_components/angular_ui/build/angular-ui.js', './bower_components/angular-ui-router/release/angular-ui-router.js'], 
     dest: 'dist/angular_lib.js' 
    }, 
    app: { 
     src: ['./src/app.js', './src/**/*.js'], 
     dest: 'dist/app.js' 
    } 

}, 

});

grunt.registerTask('default', ['clean', 'concat', 'copy']); 

Таким образом, файл grunt выполняет свою работу и создает файл в папке dist /.

Теперь мой index.html выглядит следующим образом:

<body ng-app="app" ng-controller="appCtrl"> 
    {{test}} 

    <a ui-sref="state1">State 1</a> 
    <a ui-sref="state2">State 2</a> 

    <ui-view></ui-view> 

    <script src="../jquery_lib.js"></script> 
    <script src="../angular_lib.js"></script> 
    <script src="../app.js"></script> 
</body> 

, когда я нажимаю на состояние 1, браузер дает мне следующую ошибку:

angular_lib.js:9732 XMLHttpRequest cannot load 
file:///Users/james/Documents/Code/bk/client/dist/src/partials/state1.tpl.html. 
Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource. 

любой лать вывод, почему я получаю эту ошибку ?

+0

Какие дорожки вы используете для своих шаблонов? Угловой пытается загрузить их с помощью файла: // вместо http: //, это заставит меня думать, что у вас может быть файл: // в конфигурации вашего маршрутизатора или где-либо еще. – Martin

ответ

0

Я думаю, что вы можете решить свою проблему, указав index.html, обслуживаемый сервером http, вместо того, чтобы сообщать браузеру его прямое из файловой системы. Как вы можете видеть в выводе, опубликованном в браузере, CORS не поддерживается протоколом file://, но поддерживается протоколом http://.

Например, если у вас установлен Python, есть простой HTTP-сервер, который вы можете запустить из той же директории, что и файл index.html:

python -m SimpleHTTPServer 8000 

После запуска, что из того же каталога, что index.html находится, посетить localhost:8000 в вашем браузере.

+0

Пробовал ваше предложение. Создал экспресс-сервер .. это, однако, приводит к другой проблеме. Https://stackoverflow.com/questions/27219638/express-file-not-serving-app – runtimeZero

+0

выглядит так, как будто он был решен :) Я изо всех сил пытался получить угловую работу , – thataustin

Смежные вопросы