express - 如何在 gcloud 上但不在域的根目录上启动 express 服务器?
问题描述
我解释了我的问题,我有一个 Gcloud 域“example.appspot.com”(例如)和一个来自 squareSpace 的网站。我想在此域的 node.js 中添加一个 Web 应用程序,而不覆盖原始站点。我想通过此链接“example.appspot.com/webApp/”在网络应用程序上连接用户。如果您访问“example.appspot.com”,您就在 squareSpace 网站上。
如果我部署 Web 应用程序并转到“example.appspot.com”,我有 Web 应用程序,但来自 squareSpace 的网站已关闭......但我的应用程序没有“/”的“获取或发布”,第一个页面是“/登录”。如果我继续“/”,我只有“无法获取 /”
我尝试使用 dispath.yaml 但它不起作用。
dispatch:
- url: "example.appspot.com/webApp"
service: default
没有任何变化,“example.appspot.com/webApp”不起作用......
我尝试使用 openapi-appengine.yaml。
swagger: "2.0"
info:
description: "WebApp"
title: "Title WebApp"
version: "1.0.0"
host: "example.appspot.com/webApp"
但它不希望主机中的“/”。
我尝试在 app.yaml 中使用处理程序,但它不起作用......
我没有找到解决方案。
您知道我如何告诉 gcloud 仅在 "/webApp/" 上使用该应用程序吗?我很抱歉我的英语水平不好,我每天都在提高它。
解决方案
有两种方法可以实现这一点,具体取决于您的方案:
1) 特快路线:
每条路线都会执行您需要的逻辑。Node 与 module.exports/require 系统一起工作,因此对于每个路由,您可以拥有一个不同的 JS 文件,该文件导出所有应有的函数,用于路由的代码。
例子:
服务器.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const index = require('./index');
res.send(index.hello());
});
app.get('/webapp', (req, res) => {
const webapp = require('./webapp');
res.send(webapp.appFunction());
});
index.js
exports.hello = function() {
return "Hello";
}
webapp.js
exports.appFunction = function() {
return "App Function";
}
2)服务重定向:如果您需要一个完整的应用程序在某个端点而不是某些功能上运行,那么您可以将 webapp 部署为同一应用程序中的不同服务,并将客户端请求重定向到给定端点的该服务。
为此,请使用专用的package.json
和app.yaml
. 只需在中指定服务名称app.yaml
:service: webapp
部署后,您的服务将在表单中的网络链接上可用https://[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com
,您可以使用它从默认应用程序的端点重定向:
app.get('/webapp', (req, res) => {
res.redirect('https://[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com');
});
有关服务和路由的更多信息在这里。您还可以使用 dispatch.yaml 管理路由:
例如,如果您的服务 ID 是“webapp”
dispatch:
- url: "example.appspot.com/webApp"
service: webapp
推荐阅读
- spring - 如何将@Bean工厂方法放在bean类本身?
- javascript - TypeError: fs.existsSync 不是函数 nodeJs (Browserify)
- python - python'from'第4行上的连续语法错误
- ios - Swift Playgrounds 中的用户麦克风权限
- oracle-sqldeveloper - SQL Developer中执行计划中的灰色行是否被执行?
- reactjs - 如何在反应中导入自定义样式组件
- c# - 需要帮助创建和展示我的纸牌
- prometheus - 直方图时间范围内观测值的普罗米修斯标准偏差
- solr - Filter Query 只返回一个结果,但结果却超过 70K
- r - 将离散 y 轴高度调整为刻面中的段数