Как запустить экспресс-сервер на gcloud, но не в корне домена? - PullRequest
0 голосов
/ 31 декабря 2018

Я объясняю свою проблему, у меня есть домен Gcloud «example.appspot.com» (например) с веб-сайтом из squareSpace.Я хотел бы добавить веб-приложение в node.js на этом домене без перезаписи исходного сайта.Я хотел бы подключить пользователя в веб-приложении по этой ссылке «example.appspot.com/webApp/».И если вы перейдете по адресу «example.appspot.com», вы окажетесь на веб-сайте squareSpace.

Если я разверну веб-приложение и зайду на «example.appspot.com», у меня будет веб-приложение, носайт из squareSpace не работает ... Тем не менее, мое приложение не имеет "get or post" для "/", первая страница - "/ login".Если я продолжаю "/", у меня просто "Cannot GET /"

Я пытался использовать dispath.yaml, но он не работает.

dispatch:
  - url: "example.appspot.com/webApp"
    service: default

Ничего не меняется и "пример.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 Ответ

0 голосов
/ 30 января 2019

В зависимости от сценария можно достичь этого двумя способами:

1) Экспресс-маршруты:

каждый маршрут выполняет необходимую логику.Узел работает с системой 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) Перенаправление службы: если вам нужно полное приложение, работающее на некоторой конечной точке, а не некоторые функции, то вы можете развернуть веб-приложение как отдельную службу в том же приложении и перенаправить запрос клиента на эту службу в данной конечной точке.

Для этого создайте и разверните службу веб-приложения в точности как приложение по умолчанию из собственной папки с выделенными 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 :

Пример, если ваш идентификатор сервиса "webapp"

dispatch:
  - url: "example.appspot.com/webApp"
    service: webapp
...