documentation表示您只需更新您的 app.yaml - 就像 AppEngine 中的任何语言一样。稍后它还指出,对于本地开发,您可能希望服务器也响应静态请求。但是,当我将非常简单的 app.yaml 更新为这样时:
runtime: nodejs8
handlers:
- url: /apiEndPoint
script: auto
- url: /.*
static_dir: public
似乎所有请求最终仍然会进入我的脚本 - 这将在 prod 实例中返回 404,因为这些文件不会被上传。我可以强制上传它们,然后我的 Nodejs 服务器响应静态请求 - 但我认为这个 app.yaml 的想法是对其进行配置,以便在我的应用程序逻辑之外提供静态文件?
最佳答案
所以要明确 - 您可以在生产 Nodejs 标准 AppEngine 中托管静态文件而无需使用 JS 服务器。但是,对于本地开发,您必须找到一种在计算机上运行时在本地提供这些文件的方法。因此,您将静态文件的处理程序放在 Express 中,在生产中永远不应该触及静态文件 - 因为 app.yaml 处理程序是第一遍。
如果您想确定 Express.js 在生产中不提供静态文件,您可以通过执行以下操作来实现:
// Production instances automatically have this environment variable.
const isLocal = (process.env.NODE_ENV !== "production");
if(isLocal) {
app.use(express.static('public'));
}
关于node.js - 如何在 AppEngine Standard 和 Nodejs 中提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888860/