如何让livereload为我的js文件提供服务?

2024-06-01 20:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我用webpy和livereload一起使用,效果很好,我可以对应用程序模块进行更改,并按预期重新加载浏览器页面。但是livereload找不到我的JS文件,我得到了404,当我运行没有livereload的webpy应用程序时,文件被找到了,我没有得到404

from livereload import Server

import web

from nestpas.views import *
from nestpas.urls import *
import sys

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

# web.config.debug = False
web.ctx.debug = False

app = web.application(urls, globals(), autoreload=False)
webapp = app.wsgifunc()

# Setup session storage
db = web.database(dbn='sqlite', db='dev.db')
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store,
    initializer={'login': 0}
)

if __name__ == '__main__':
    # app.run()
    server = Server(webapp)
    server.watch('static/', 'templates/', 'nestpas/')
    server.serve(port=8080, host='localhost')

JS文件存储在webpy描述的静态文件夹中,但是我在我的终端中看到了这个错误

^{pr2}$

如果我改变应用程序副本要使用的文件应用程序运行()JS文件按预期提供,而不是livereload

127.0.0.1:55534 - - [12/Feb/2017 09:16:15] "HTTP/1.1 GET /static/js/require.js" - 200

更新

添加URL

urls = (
    '/', 'Index',
    '/blog/(.+)/', 'Blog',
    '/login/', 'Login',
    '/logout/', 'Logout',
    '/admin/', 'Admin',
    '/media/', 'Media',
    '/entry/(.+)?', 'Entry'
)

Tags: 文件fromimportwebfalseapp应用程序db
1条回答
网友
1楼 · 发布于 2024-06-01 20:09:18

web.py有一个快捷方式:如果URL路径以/static/开头,则直接加载文件并将其返回给请求者。(你已经知道了。)

但是,除非网页.py作为一个简单的HTTPServer运行。当您通过livereload加载它时,您使用的是tornado web服务器,因此不会加载此功能。在

不用担心:你可以加进去。在

web/httpserver.pyStaticMiddleware中定义了此功能,因此您可以将其添加到应用程序链中:

if __name__ == '__main__':
    import web.httpserver
    static_plus_webapp = web.httpserver.StaticMiddelware(webapp)
    server = Server(static_plus_webapp)
    server.watch('static/', 'templates/')
    server.serve(port=8080, host='*')

(我没有做过广泛的测试,但它似乎工作得很好。)

相关问题 更多 >