2015-02-07 90 views
0

我正在尝试使用Angular的ui路由器加载模板。加载模板时出现AngularJS,Localhost和CORS错误

的index.html

<html ng-app="someApp"> 
<body ng-controller='SomeCtrl'> 
     <div ui-view> 
     </div> 
</body> 

app.js

angular.module('someApp', []) 

.config(function($stateProvider){ 
    $stateProvider 
     .state('someApp', { 
     url:"/", 
     templateUrl: 'app/things/things.tmpl.html', 
     controller: 'SomeCtrl' 
     }) 
    }) 

当我尝试去在本地主机的应用程序的根目录(拖动和HTML文件拖放到浏览器)我得到一个CORS错误:

XMLHttpRequest cannot load file://localhost/Users/me/theApp/src/app/things/things.tmpl.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 

我的浏览器窗口中的url和错误中的url似乎是相同的。是否因为Angular使用HTTP请求获取this answer中指示的模板?他们似乎不是类似的问题,因为除了本地主机提供模板之外,不应该有其他域。

+1

Chrome将不允许你加载这样的文件,你需要在服务器上提供你的应用程序(apache,node,python,IIS,something)。 – Tom 2015-02-07 19:49:19

+0

Gotcha。谢谢! – twsmith 2015-02-07 19:51:34

回答

1

是的100%至少需要一个本地服务器运行。 MAMP可能是最简单的。 http://www.mamp.info/en/

执行Mac安装,然后将应用程序根目录放在/ Applications/Mamp/htdocs文件夹中。然后,当Mamp打开并运行时,默认情况下是localhost:8888/app-name /。

1

@Tom是完全正确的 - 你无法以这种方式在Chrome中加载文件。我不得不启动一个http服务器。

我跟着these directions安装HTTP服务器,并使用启动服务器:

http-server -a localhost -p 8000 

这使得应用和我的模板正确加载。