我正在使用webapp2构建一个带有angularjs的webapp。这是目录结构。
|--test-app
|--lib
|--static
|--js
|--app.js
|--controller.js
|--lib
|--angular
|--angualr-bootstrap
|--index.html
|--app.yaml
|--mainapp.py
但是当我尝试在index.html
中加载js文件时<!DOCTYPE html>
<html lang="en" ng-app="testApp">
<head>
<script src="/static/js/app.js"></script>
<script type="text/javascript" src="/static/js/controller.js"></script>
</head>
<body>
<div ng-controller="MainController">
IN MAIN
</div>
</body>
</html>
我收到这些错误:
GET http://localhost:8080/static/js/app.js
(404 - 找不到档案)
GET http://localhost:8080/static/js/controller.js
(404 - 找不到档案)
我无法弄清楚为什么我会收到这些错误。
以下是app.yaml
application: test-app
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: mainapp.app
libraries:
- name: webapp2
version: "2.5.2"
以下是mainapp.py
class Start(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
self.response.write(open('static/index.html').read())
app = webapp2.WSGIApplication([
('/', Start),
], debug=True)
答案 0 :(得分:2)
您必须在app.yaml
:
handlers:
- url: /static
static_dir: static
handlers:
- url: /.*
script: mainapp.app
有关详细信息,请参阅docs:
与传统的网络托管环境不同,Google App Engine不会直接从应用程序的源目录中提供文件,除非已配置为执行此操作。
网址处理程序路径模式按照它们在app.yaml
中从上到下的顺序进行测试。在这种情况下,/static
模式将在/.*
模式之前匹配适当的路径。
答案 1 :(得分:2)
我将index.html移出静态文件夹,然后显式声明静态URL,如@Selcuk所说。而且工作正常。