【发布时间】:2016-01-18 17:20:32
【问题描述】:
我有一个简单的 Angular 应用程序,它位于我项目的 www 文件夹中。当我通过 http:// 服务器或虚拟主机运行它时,它在浏览器中工作正常。但是index.js 将其加载为文件
mainWindow.loadUrl('file://' + __dirname + '/www/index.html');
所以当我双关语electron . 它显示空白窗口。我试图通过 file:/// 在 Chrome 浏览器中打开我的index.html,它也是空白的。控制台报错
XMLHttpRequest 无法加载 file:///Users/Sergey/Sites/Electron-test/www/partials/layout.html。跨域请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。(匿名函数)@ angular.js:10722
这是因为在路由器 ui 上
$stateProvider.state("app", {
url: '/',
templateUrl: 'partials/layout.html'
});
图像还有一些其他相同的错误。
我想有两种解决方案。
- 使用节点运行服务器并将
loadUrl('file:///...')更改为loadUrl('http:///...'),但我不知道该怎么做。 - 做点别的。可能是一些允许跨源请求的标头或参数,我不知道该怎么做。
我该如何解决这个问题?
【问题讨论】:
-
您的两个选项相互关联,因为 CORS 是一个服务器配置,无法在
file:///上配置。您应该真正研究如何部署服务器,因为在您的开发机器上复制您计划托管的环境通常是一种很好的做法。如果您打算在节点服务器上托管,那么开发中的节点很好(而且很容易);如果你打算使用其他东西,比如 PHP,那么尽可能在你的开发环境中进行设置。 -
这是 AngularJS SPA 应用程序。它仅加载静态 JS/CSS/HTML 文件。所有数据请求都发送到在线 JSON API 服务器。所以我想任何服务器都可以工作。