我解释了我的问题, 我有一个Gcloud域“ example.appspot.com”(例如),其中包含来自squareSpace的网站。我想在此域的node.js中添加一个Web应用程序而不覆盖原始站点。 我想通过此链接“ example.appspot.com/webApp/”在Web应用程序上连接用户。如果您访问的是“ example.appspot.com”,那么您将位于squareSpace网站上。
如果我部署了Web应用程序并转到“ example.appspot.com”,则说明我有该Web应用程序,但是来自squareSpace的网站已关闭... 但是我的应用程序没有“ /”的“获取或发布”,第一页是“ / login”。 如果我继续输入“ /”,则只有“无法获取/”
我尝试使用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 /”上使用该应用程序吗? 我为我的英语水平不好而感到抱歉,我每天都在进步。
答案 0 :(得分:0)
有两种方法可以实现此目的,具体取决于您的情况:
1)快速路线:
每个路由执行需要的逻辑。 Node与module.exports / require系统一起使用,因此对于每条路由,您可以有一个不同的JS文件,该文件导出该路由的代码中使用的所有应有的功能。
示例:
server.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
从自己的文件夹中创建和部署Webapp服务,使其与默认应用完全相同。只需在app.yaml
中指定服务名称:service: webapp
一旦部署,您的服务将以https://[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com
的形式在Web链接上可用,您可以使用该链接从默认应用程序的端点进行重定向:
app.get('/webapp', (req, res) => {
res.redirect('https://[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com');
});
More info about services and routing here。您也可以manage routing with dispatch.yaml:
实施例如果服务ID为 “web应用”
dispatch:
- url: "example.appspot.com/webApp"
service: webapp