1

Livereload + Flask + Flask SOcketIO + Flask Script を使用しています。問題は、SocketIO が gevent-socketio サーバーを必要とすることです。すべて livereload ではありません。誤解しないでほしいのですが、私はこの問題を解決したくありません。私は livereload を実行して css/sass/js の作業を行うだけなので、問題ありません。

しかし、クライアントが socketIO サーバーに接続しようとするたびにスローされる例外は、私を大いに悩ませます。だから私はJavaScriptを無効にすることができると思っていましたが、私のアプリは主にAngularに依存してディレクティブを非同期にレンダリングするため、スタイルを切り替えるためのタグがページにありません. 次に、構成プロパティを記述できるので、ページをロードするとJinja2がそれをjavascript変数として提供し、Falseに設定されている場合に特定のsocket-io jsファイルをロードしません。

config.py で設定します。

class Config:
    LIVERELOAD = False

FLask-Script で livereload サーバーを実行します

class liveReloadServer(Command):
    """prints hello world"""
    def run(self):
        with app.app_context():
            server = Server(app.wsgi_app)
            Config.LIVERELOAD = 'True'
            server.serve(port=8080)

config プロパティを JavaScript 側に渡す

var LIVERELOAD = "{{ config['LIVERELOAD'] }}";

しかし、これは機能しません (LIVERELOAD は常に True を表示します)。Config クラスが既に Flask アプリ オブジェクトに挿入された後にプロパティを設定しているためです。別の方法はありますか?

4

1 に答える 1

2

作成したカスタム オブジェクトに関連付けられていない Flask アプリの構成を設定する必要があります。

app.config['LIVERELOAD'] = True
于 2015-09-23T16:04:10.650 に答える