加载js文件时出错404

时间:2015-03-15 15:42:44

标签: javascript python angularjs google-app-engine webapp2

我正在使用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>

我收到这些错误:

  1. GET http://localhost:8080/static/js/app.js(404 - 找不到档案)

  2. GET http://localhost:8080/static/js/controller.js(404 - 找不到档案)

  3. 我无法弄清楚为什么我会收到这些错误。

    以下是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)
    

2 个答案:

答案 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所说。而且工作正常。