node.js - 如何在 AppEngine Standard 和 nodejs 中提供静态文件
问题描述
该文档说您只需更新您的 app.yaml - 就像您在 AppEngine 中的任何语言一样。它稍后还指出,对于本地开发,您可能希望您的服务器也响应静态请求。但是,当我将非常简单的 app.yaml 更新为这样时:
runtime: nodejs8
handlers:
- url: /apiEndPoint
script: auto
- url: /.*
static_dir: public
似乎所有请求最终仍会进入我的脚本 - 这将在 prod 实例中返回 404,因为这些文件不会被上传。我可以强制它们上传,然后我的 nodejs 服务器响应静态请求 - 但我认为这个 app.yaml 的想法是配置它,以便在我的应用程序逻辑之外提供静态文件?
解决方案
所以要清楚 -您可以在生产 Nodejs Standard 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'));
}
推荐阅读
- xslt - 在更新之前确定元素值
- mysql - 从 alter table 中的另一列添加值
- java - 为什么我的自定义 AbstractMongoEventListener 没有被调用?
- datepicker - Keith Wood DatePicker - setDate 不工作
- amazon-web-services - Kinesis Firehose 无法在 S3 中将 JSON 输入转换为镶木地板
- git - 重新初始化现有的 git 存储库
- android - 如何在 Android 上限制有关通话记录的用户通知
- routes - SvelteKit:在路由更改时运行功能(对于访问令牌,无需在布局文件中执行)
- python - 在 Pandas 数据框中将重复的行合并为一行
- kubernetes - 如何使用 ConfigMap 在 Grafana 中添加仪表板 JSON - metadata.annotations:太长