2017-11-12 8 views
0

原子テキストエディタを試していますが、私はこの問題に直面しています。原子のanglejsからローカルpythonファイルを呼び出します。

私のコードは以下の通りです:

が、これはHTMLの角度のファイルtest.htmlという

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    </head> 
    <body> 
    <div ng-app="myApp" ng-controller="customersCtrl"> 

    <ul> 
     <li ng-repeat="x in myData"> 
     {{ x.name + ', ' + x.age }} 
     </li> 
    </ul> 

    </div> 
    </body> 
</html> 

<script> 
var app = angular.module('myApp', []); 
app.controller('customersCtrl', function($scope, $http) { 
    $http.get('test.py').then(function(response) { 
     $scope.myData = response.data; 
    }); 
}); 
</script> 

とPythonのファイルtest.py私は開く

import json 

test = [{'name':'sample1','age':'24'},{'name':'sample2','age':'25'}] 
print json.dumps(test); 

以下のようにされています原子でこのブラウザ、私は次のエラーが表示されます。

angular.js:10765 Failed to load file:///Users/harshajasti/Desktop/LibraryApplication/test.py: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. 

私はローカルファイルを呼び出すためにエラーが発生していますが、これを修正する方法はわかりません。

+0

注:これは原子の問題ではありません。 – francium

答えて

1

httpサーバを使用してpythonファイルを提供します。サーバーでCORSが有効になっている必要があります。 CORSをサポートしているnpmからnodeJSベースのサーバーをインストールするか、CORSヘッダーとともに組み込みの単純なhttpサーバーを起動するpython2またはpython3(探しているものに応じて)スクリプトを検索できます。

簡単に言えば、CORSは、Webサーバー間でコンテンツを要求する方法を制限する方法です。ヘッダーにCORS行がないと、ブラウザーは他のサーバーからのデータの要求を許可しません。それはあなた自身のサーバーではなく、ヘッダーを持たない他のサーバーと関係しています。

詳細については、https://developer.mozilla.org/en-US/docs/Web/HTTP/CORSを参照してください。あなたはnpmがインストールされていると仮定するとちょうど一つの可能​​な解決策は、あなたが検索を通じて、多くの多くの人を見つけることができます

https://www.npmjs.com/package/http-server

npm i -g http-server # This will install globally, -g flag 
cd /Users/harshajasti/Desktop/LibraryApplication/ 
http-server --cors 

これは、その後にサービス提供取り組むものをプリントアウトします。例えばlocalhost:8888/file.pyのようにfile:///Users...を要求するのではなく、

+0

ねえ..私は言及した。私はまだ次のエラーが表示されます。localhost:8080/test.pyをロードできませんでした:クロスオリジンリクエストは、プロトコルスキーム(http、data、chrome、chrome-extension、https)でのみサポートされています。 –

+0

私は接続を実行していますが、以下のように新しいエラーが発生します。これは簡単な問題です。 angular.js:12520エラー:[ngRepeat:dupes] http://errors.angularjs.org/1.4.8/ngRepeat/dupes?p0=x%20in%20myData&p1=string%3Ao&p2=o –

+0

角度のあるプロジェクトを別のプロジェクトから提供するサーバーも同様です。おそらく、さまざまな理由で開発するときに、あなたのシステムからhtmlファイルをロードしたくないのです。したがって、両方のサーバーを実行してください。角度のあるプロジェクトサーバーではCORSを有効にする必要はありませんが、Pythonファイルのみを有効にする必要はありません。あるいは、anglejsプロジェクトと同じディレクトリ(例えばproject/assets/file.py)からPythonファイルを提供することもできますし、CORSが必要ではなく2つのサーバーを持つこともできません。 – francium

関連する問題