当前位置: 首页 > 知识库问答 >
问题:

Node.jsGoogle App Engine提供的静态内容

解晟
2023-03-14

谷歌云文档对该应用的可用语法不是很精确。用于我的节点的yaml文件。js应用程序。

我使用了GAE的Python留档中描述的语法,从中我发现了处理程序mecism:

    handlers:
    - url: /index.html
      static_files: /public/index.html
      upload: /public/index.html

我避免使用expressjs规则来服务/public/index。html内容,最后我得到了一个404错误,这意味着GAE不是作为静态内容提供我的页面:

    $ curl -i "http://my-project/index.html"
    HTTP/1.1 404 Not Found
    ...

你有什么线索吗?节点。js与制作API、生成动态内容相关。。。但我更喜欢使用谷歌后端,甚至是Nginx服务器来处理静态内容。

删除前导斜杠并没有解决这个问题。我稍微改变了我的app.yaml配置:

    handlers:
    - url: /api/.*
      secure: always
      script: app.js
    - url: /.*
      secure: always
      static_dir: public

我仍然在/索引中找不到404。html,并在调用/api/stuff时获得正确的200 OK应答。

以下是我的项目树结构:

    Project root
    |- app.js
    |- app.yaml
    |- package.json
    |- public/
    |  `-- css/
    |     `-- style.css
    |  `-- js/
    |     `-- main.js
    |  `-- index.html

共有1个答案

帅博远
2023-03-14

非常留档页面的示例通常应该足够了。

您在static_files上传值中有一个前导/,它应该只是到您的应用目录顶部的相对路径。

可能还有其他原因,起点是应用程序的日志,无论是在开发服务器上还是在GAE上(如果已经部署)。

更新:

根据静态目录处理程序doc:

静态目录示例:

handlers:
# All URLs beginning with /stylesheets are treated as paths to static files in
# the stylesheets/ directory.
- url: /stylesheets
  static_dir: stylesheets

网址

URL前缀。该值使用正则表达式语法(因此必须转义regexp特殊字符),但不应包含分组。所有以该前缀开头的URL都由该处理程序处理,使用前缀后的URL部分作为文件路径的一部分。

根据这句话,我怀疑应用程序的url中存在通配符。yaml的处理程序规范可能会导致问题(例如,/index.html实际上可能会通过静态\u dir解析逻辑扩展到/index.html),我会替换url以清楚地指示目录,如下所示:

- url: /
  secure: always
  static_dir: public

我不喜欢将应用程序命名空间的顶级/绑定到静态目录,但对于一般静态的应用程序来说可能还可以。确保您始终将此处理程序规范保留在app.yaml文件中以避免问题。

 类似资料:
  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 问题内容: 我无法让Spring-boot项目提供静态内容。 我已经放在一个命名的文件夹下。在其中,我有一个名为的文件夹。当我打包应用程序并运行它时,它找不到我放在该文件夹中的图像。 我试图把静态文件中,并但没有任何工程。 如果我我可以看到文件在正确文件夹的jar中:例如,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404 有什么想法为什么

  • 问题内容: 我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是它们用于提供静态内容的默认servlet具有处理我要使用的URL结构的不同方式(详细信息)。 因此,我希望在web应用程序中包含一个小型servlet,以提供其自己的静态内容(图像,CSS等)。Servlet应该具有以下属性: No external dependencies Simple and reliab

  • 我与Wildfly上部署的webapp中的一些静态文件(主要是图像)发生了冲突。有时应用程序需要更新其中的一些文件,然后在文件系统中替换这些文件。 这显然是缓存的问题,因为如果我删除以前请求的文件之一并再次请求它,我将得到和StackTrace!

  • 问题内容: 该应用程序使用JDK 8,Spring Boot和Spring Boot Jersey启动程序,并打包为WAR(尽管它是通过Spring Boot Maven插件在本地运行的)。 我想做的是将我在运行中(在构建时)生成的文档作为欢迎页面。 我尝试了几种方法: 通过按照此处所述配置 适当的init参数,让Jersey提供静态内容 引入以便将生成的HTML文档作为欢迎文件列出。 这些都没有

  • 类似于另一个问题(参见过滤静态内容Jersey),我想从Jetty提供静态内容。在浩瀚的互联网上散布着几个类似的问题,但大多数都不涉及Guice,而那些涉及Guice的问题已经完全过时了。 我有一个现有的服务,使用泽西(1.12)和Guice(3)与以下: < code>MyGuiceConfig看起来像这样: 当我使用 时,我的服务按预期工作。但是,任何对静态内容的请求都会产生404。 如何在不