Flask-Assets在本地工作,但不在Heroku上 [英] Flask-Assets working locally but not on Heroku

查看:187
本文介绍了Flask-Assets在本地工作,但不在Heroku上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在修改



我已经通过使用包含以下内容的文档根中的.bowerrc文件来设置bower以在静态根目录下安装前端依赖项: directory:myflaskapp / static / bower_components}

我修改了myflaskapp / assets.py文件:

pre $ from flask_assets import Bundle,Environment
import os

css = Bundle(
libs / bootstrap / dist / css / spacelab / bootstrap.css,
bower_components / eonasdan-bootstrap-datetimepicker / build / css / bootstrap-datetimepicker。 css,
css / style.css,
css / home.css,
#css / style.css,
filters =cssmin,
output =public / css / common.css


js = Bundle(
libs / jQuery / dist / jquery.js,
libs / bootstrap / dist / js / bootstrap.js,
bower_components / moment / moment.js,
bower_components / eonasdan-bootstrap-datetimepicker / build / js / bootstrap-datetimepicker .min.js,
js / plugins.js,
filters ='jsmin',
output =public / js / common.js



资产= E nvironment()

assets.register(js_all,js)
assets.register(css_all,css)

myflaskapp / app.py初始化资源:

  from flask import Flask,render_template 
from myflaskapp.assets import assets

:param config_object:要使用的配置对象。

app = Flask(__ name__)
app.config.from_object(config_object)
register_extensions(app)
register_blueprints(app)
register_errorhandlers (app)
返回应用程序

def register_extensions(app):
assets.init_app(app)
$ b $ def register_blueprints(app):
app.register_blueprint(public.blueprint)
app.register_blueprint(user.blueprint)

在myflaskapp / settings.py中,在测试过程中,我已经设置了:

  ASSETS_DEBUG = True#不要捆绑/缩小静态资产

本地控制台中没有错误,在heroku上,我得到一个内部服务器错误。日志:

 ←[33m2016-03-19T18:02:12.464159 + 00:00 app [web.1]:←[ 0m for org,cnt in self.resolve_contents(ctx):
←[33m2016-03-19T18:02:12.464161 + 00:00 app [web.1]:←[0m raise BundleError(e)
←[33m2016-03-19T18:02:12。 464162 + 00:00 app [web.1]:←[0m BundleError:'bower_components / eonasdan-bootstrap-datetimepicker / build / css / bootstrap-datetimepicker.css'在加载路径中找不到:
['/ app / myflaskapp / static']
←[33m2016-03-19T18:02:12.464150 + 00:00 app [web.1]:←[0m rv = template.render(context)
←[33m2016 -03-19T18:02:12.464151 + 00:00 app [web.1]:←[0m文​​件/app/.heroku/python/lib/python2.7/site-packages/jinja2/environment.py,行969,渲染
←[33m2016-03-19T18:02:12.464152 + 00:00 app [web.1]:←[0m文​​件/app/.heroku/python/lib/python2.7/site在handle_exception
←[33m2016-03-19T18:02:12.464154 + 00:00 app [web.1]:←[0m {%extendslayout)中,第742行的package / jinja2 / environment.py html%%
←[33m2016-03-19T18:02:12.464157 + 00:00 app [web.1]:←[0m url = bundle.urls()
←[33m2016-03- 19T18:02:12.464153 + 00:00 app [web.1]:←[0m reraise(exc_type,exc_value,tb)

正如你可以看到的它是在那里的顶部截图。如何解决这个问题?



注意:我一直在寻找 https://github.com/mitsuhiko/flask/issues/348 ,这可能与此有关。

解决方案

尝试检查.gitignore,生成经常被忽略,这将排除你的静态文件在这里:bower_components / eonasdan-bootstrap-datetimepicker / build / *

I'm working to modify a cookiecutter Flask app. I'm working locally on WIN7 and attempting to deploy to heroku. I'm currently trying to add a datepicker to a page. I've found https://eonasdan.github.io/bootstrap-datetimepicker/. The structure of myflaskapp:

I've set up bower to install the front end dependencies under the static root by using a .bowerrc file in the document root containing:

{ "directory" : "myflaskapp/static/bower_components" }

This cookiecutter uses flask-assets to manage the project assets. Following https://adambard.com/blog/fresh-flask-setup/ I've modified myflaskapp/assets.py file :

from flask_assets import Bundle, Environment
import os

css = Bundle(
    "libs/bootstrap/dist/css/spacelab/bootstrap.css",
    "bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css",
    "css/style.css",
    "css/home.css",
    # "css/style.css",
    filters="cssmin",
    output="public/css/common.css"
)

js = Bundle(
    "libs/jQuery/dist/jquery.js",
    "libs/bootstrap/dist/js/bootstrap.js",
    "bower_components/moment/moment.js",
    "bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js",
    "js/plugins.js",
    filters='jsmin',
    output="public/js/common.js"
)


assets = Environment()

assets.register("js_all", js)
assets.register("css_all", css)

myflaskapp/app.py initializes the assets:

from flask import Flask, render_template
from myflaskapp.assets import assets
    """
    :param config_object: The configuration object to use.
    """
    app = Flask(__name__)
    app.config.from_object(config_object)
    register_extensions(app)
    register_blueprints(app)
    register_errorhandlers(app)
    return app

def register_extensions(app):
    assets.init_app(app)

def register_blueprints(app):
    app.register_blueprint(public.blueprint)
    app.register_blueprint(user.blueprint)

In the myflaskapp/settings.py , during testing, I have set:

ASSETS_DEBUG = True  # Don't bundle/minify static assets

Locally, there are no errors in the console. On heroku , I get an Internal server error. Logs:

    ←[33m2016-03-19T18:02:12.464159+00:00 app[web.1]:←[0m     for org, cnt in self.resolve_contents(ctx):
    ←[33m2016-03-19T18:02:12.464161+00:00 app[web.1]:←[0m     raise BundleError(e)
    ←[33m2016-03-19T18:02:12.464162+00:00 app[web.1]:←[0m BundleError: 'bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css' not found in load path:
    ['/app/myflaskapp/static']
    ←[33m2016-03-19T18:02:12.464150+00:00 app[web.1]:←[0m     rv = template.render(context)
    ←[33m2016-03-19T18:02:12.464151+00:00 app[web.1]:←[0m   File "/app/.heroku/python/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
    ←[33m2016-03-19T18:02:12.464152+00:00 app[web.1]:←[0m   File "/app/.heroku/python/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
    ←[33m2016-03-19T18:02:12.464154+00:00 app[web.1]:←[0m     {% extends "layout.html" %}
    ←[33m2016-03-19T18:02:12.464157+00:00 app[web.1]:←[0m     urls = bundle.urls()
    ←[33m2016-03-19T18:02:12.464153+00:00 app[web.1]:←[0m     reraise(exc_type, exc_value, tb)

As you can see in the top screenshot it is there. How can I fix this?

Note: I've been looking at https://github.com/mitsuhiko/flask/issues/348, which may have a bearing on this.

解决方案

Try checking your .gitignore, build is often ignored which would exclude your static files here: bower_components/eonasdan-bootstrap-datetimepicker/build/*

这篇关于Flask-Assets在本地工作,但不在Heroku上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆