Angularjs 静态资产不在google应用程序引擎上工作

Angularjs 静态资产不在google应用程序引擎上工作,angularjs,google-app-engine,Angularjs,Google App Engine,我已经在google app engine上部署了angularjs应用程序,但是在js、css、bower组件和组件目录方面存在一些问题。谷歌应用程序引擎上没有提供javascript和css。这是我的应用程序目录结构 myapp app bower_components angular-bootstrap ..........etc components version.js css app.css

我已经在google app engine上部署了angularjs应用程序,但是在js、css、bower组件和组件目录方面存在一些问题。谷歌应用程序引擎上没有提供javascript和css。这是我的应用程序目录结构

myapp
  app
    bower_components
        angular-bootstrap
        ..........etc
    components
        version.js
    css
        app.css
    js
        app.js
        controllers.js
        services.js
        filters.js
        directives.js
  index.html
  app.yaml
以下是我的app.yaml文件内容:

application: myappid
version: 1
runtime: python27
threadsafe: true
api_version: 1

handlers:

url: css
static_dir: app/css
mime_type: text/css

url: js
static_dir: app/js
mime_type: text/javascript

url: /components
static_files: components
upload: components
mime_type: text/javascript

url: /bower_components
static_files: /bower_components

upload: /bower_components
mime_type: text/javascript

url: (.*)/.*
static_files: app/index.html
upload: app

url: (.*)
static_files: app
upload: app
我在控制台上遇到以下错误:

INFO     2015-04-23 10:02:33,782 module.py:788] default: "GET /app/ HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,846 module.py:788] default: "GET /app/bower_components/html5-boilerplate/css/normalize.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,847 module.py:788] default: "GET /app/bower_components/html5-boilerplate/css/main.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/angular-ui-grid/ui-grid.min.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,854 module.py:788] default: "GET /app/css/app.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/bootstrap/dist/css/bootstrap.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/angular-ui-select/dist/select.min.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,856 module.py:788] default: "GET /app/bower_components/select2/select2.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,858 module.py:788] default: "GET /app/bower_components/selectize/dist/css/selectize.default.css HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,862 module.py:788] default: "GET /app/bower_components/angular/angular.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,863 module.py:788] default: "GET /app/bower_components/angular-resource/angular-resource.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,864 module.py:788] default: "GET /app/bower_components/angular-route/angular-route.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,864 module.py:788] default: "GET /app/bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,865 module.py:788] default: "GET /app/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,868 module.py:788] default: "GET /app/bower_components/angular-ui-grid/ui-grid.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,869 module.py:788] default: "GET /app/bower_components/angular-ui-select/dist/select.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,870 module.py:788] default: "GET /app/bower_components/angular-sanitize/angular-sanitize.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,870 module.py:788] default: "GET /app/bower_components/selectize/dist/js/selectize.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,871 module.py:788] default: "GET /app/bower_components/angular-ui-router/release/angular-ui-router.min.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,874 module.py:788] default: "GET /app/bower_components/underscore/underscore.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,877 module.py:788] default: "GET /app/js/controllers.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,877 module.py:788] default: "GET /app/bower_components/angular-underscore/angular-underscore.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,877 module.py:788] default: "GET /app/js/app.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,881 module.py:788] default: "GET /app/components/version/version.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,884 module.py:788] default: "GET /app/components/version/version-directive.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,885 module.py:788] default: "GET /app/js/services.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,885 module.py:788] default: "GET /app/components/version/interpolate-filter.js HTTP/1.1" 304 -
INFO     2015-04-23 10:02:33,885 module.py:788] default: "GET /app/js/filters.js HTTP/1.1" 304 -

有人能解释什么地方出了问题吗?

不一定有什么地方出了问题

您的所有呼叫都返回状态代码304。 304表示自上次访问请求的资源后,该资源未被修改。 304不是错误指示代码

很可能您的浏览器的缓存中仍有请求的结果

它很短但很清楚

304未修改

指示自版本更新后资源未被修改 如果自修改或不匹配,则由请求标头指定。 这意味着不需要重新传输资源,因为 客户端仍有以前下载的副本

另请参见,其中有更多详细信息

304未修改

如果客户机执行了条件GET请求,则访问被取消 允许,但文档尚未修改,服务器应 使用此状态代码进行响应。304响应不能包含 消息体,因此始终由第一个空行终止 在标题字段之后

响应必须包括以下标题字段:

日期,除非第14.18.1节要求省略,如果无时钟源服务器遵守这些规则,并且代理和客户端添加 他们自己对未收到回复的任何回复的日期 根据[RFC 2068]第14.19节的规定,缓存将运行 没错

ETag和/或内容位置(如果标题已发送) 在对同一请求的200次响应中

过期、缓存控制和/或更改(如果字段值可能更改) 与之前针对同一问题的任何回复中发送的内容不同 变量如果使用强缓存验证器(见第13.3.3节),则响应不应包括其他 实体标题。否则,即使用弱 验证程序,响应不得包含其他实体标头;这 防止缓存实体和更新实体之间的不一致 标题。 如果304响应指示当前未缓存的实体,则 缓存必须忽略响应并在没有响应的情况下重复请求 有条件的

如果缓存使用收到的304响应更新缓存条目,则 缓存必须更新条目以反映中给定的任何新字段值 回应

也请阅读此相关主题

您在app.yaml中的url路由对于您试图实现的目标是不正确的。您正在请求URL为/app/js/foo.js的javascript文件。你的路线

url: js
static_dir: app/js
匹配以“js”开头的url路径

url: (.*)/.*
static_files: app/index.html
匹配所有带有斜杠的路径,例如your-app.appspot.com/app/js/app.js,并为它们返回app/index.html


app.yaml中的URL是需要匹配完整路径的regexp,而不是目录或前缀。

我已清除缓存并再次检查,当我在浏览器调试中进入网络并检查css和js时,它不再存在。@mirfan899什么不再存在?css和js文件的状态为304,但当我使用url访问它时,它显示每个css和js文件的index.html。@mirfan899抱歉,我不明白。我的回答没有帮助,或者?/app/components/version/interpolate-filter.js这是js文件的路径,当我在浏览器上打开它时,它会显示index.html而不是js的内容。我认为这与谷歌应用程序引擎的问题有关,因为在我的本地机器上,应用程序运行良好,但在谷歌应用程序引擎上,它的行为有所不同。