AngularJS、Localhost 和 CORS 加载模板时出现错误

AngularJS, Localhost, and CORS errors when loading a template

我正在尝试使用 Angular 的 ui-router 加载模板。

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.

我浏览器中的urlwindow和报错中的url好像是一个。是否因为 Angular 使用 HTTP 请求来获取 this answer 中指示的模板?它们似乎不是类似的问题,因为除了为模板提供服务的本地主机之外,不应该有其他域。

@Tom 完全正确——您不能以这种方式在 Chrome 中加载文件。我必须启动一个 http 服务器。

我按照 these directions 安装 http-server 并使用以下命令启动服务器:

http-server -a localhost -p 8000

这使得应用程序和我的模板能够正确加载。

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

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