node.js - 如何在 AppEngine Standard 和 Nodejs 中提供静态文件

标签 node.js google-app-engine server static app.yaml

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/

相关文章:

mysql - mysql 数据库中的数据格式不正确

javascript - Electron - fs.readdir 回调有时不会在重新加载时执行

javascript - Meteor、NPM 模块和光纤回调

node.js - Expect(spiedMethod).not.toBeCalled() 失败,因为它正在被另一个测试调用

java - 如何使用 objectify 在 google 数据存储中正确保存 google 用户?

google-app-engine - 仅从反向引用查询键

javascript - 如何运行我从 github 导入的这个 Node 应用程序?

javascript - NestJS NATS 请求-响应

python - 为 App Engine 上的 Django session 缓存设置 Memcached

linux - 如何查看某个IP的宿主目录是什么?