在GAE中发布nestjs应用程序

爱德华多

我正在学习nestjs,然后逐步进行此操作

该应用程序正常运行。但是我想将其作为微服务发布到我的GAE中。我也可以很好地完成这一部分,但是当我在GPC中调用该地址时,出现错误502-错误的网关。

我相信这是我的package.json文件中的内容。但是我还没有弄清楚。以下是依赖项配置:

   "dependencies": {
   "@ nestjs / common": "^ 5.0.0",
   "@ nestjs / core": "^ 5.0.0",
   "@ nestjs / microservices": "^ 5.0.0",
   "@ nestjs / testing": "^ 5.0.0",
   "@ nestjs / websockets": "^ 5.0.0",
   "reflect-metadata": "^ 0.1.12",
   "rxjs": "^ 6.0.0",
   "typescript": "^ 2.8.0",
   "ts-node": "^ 6.0.0",
   "tsconfig-paths": "^ 3.3.1"
   },

这是我的入门说明:

"start": "ts-node -r tsconfig-paths/register src/main.ts",

最后,我的app.yaml:

env: flex 
runtime: nodejs 
service: nestapp
金T

您可以从AppEngine Typescript示例项目开始:

https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/appengine/typescript

它已经具有所有打字稿编译工具的设置。您需要的关键是在package.json脚本中:

"build": "tsc -p tsconfig.build.json",
"gcp-build": "npm run build"

"gcp-build"是保留的任务名称,在部署AppEngine NodeJS项目时始终如此。这将确保您的TypeScript在部署时被编译为JavaScript。你可以在这里读更多关于它的内容:

https://cloud.google.com/appengine/docs/standard/nodejs/running-custom-build-step

一旦您运行了TypeScript和Express,就可以将Nest替换成Express!您还需要更改其他一些东西,即AppEngine用于运行应用程序的package.json中的入口点:

"main": "dist/main.js",

以及Nest应用程序src / main.ts中的端口:

const PORT = Number(process.env.PORT) || 8080;
await app.listen(PORT);

在您的app.yaml中删除env: flex仅使用标准环境,它更便宜!

runtime: nodejs10

最后,完整的package.json将如下所示:

{
  "name": "appengine-nest",
  "description": "An example TypeScript app running on Google App Engine.",
  "version": "0.0.1",
  "author": "kmturley",
  "license": "MIT",
  "engines": {
    "node": ">=8.0.0"
  },
  "main": "dist/main.js",
  "scripts": {
    "prepare": "npm run build",
    "pretest": "npm run build",
    "build": "tsc -p tsconfig.build.json",
    "deploy": "gcloud app deploy",
    "lint": "tslint -p tsconfig.json -c tslint.json",
    "start": "node ./dist/main.js",
    "start:dev": "nodemon",
    "start:debug": "nodemon --config nodemon-debug.json",
    "test": "repo-tools test app -- dist/main.js",
    "gcp-build": "npm run build"
  },
  "dependencies": {
    "@nestjs/common": "^5.6.2",
    "@nestjs/core": "^5.6.2",
    "express": "^4.16.3",
    "nodemon": "^1.18.9",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^6.3.3",
    "ts-node": "^8.0.2",
    "tsconfig-paths": "^3.7.0",
    "typescript": "^3.0.1"
  },
  "devDependencies": {
    "@google-cloud/nodejs-repo-tools": "^3.0.0",
    "@types/express": "^4.16.0",
    "tslint": "^5.11.0"
  }
}

我在这里创建了一个示例项目:

https://github.com/kmturley/appengine-nest-angular

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何以.NET中发布Web应用程序的方式发布Windows应用程序?

如何附加到 testflight 应用程序中发布的调试?

在Android中发布应用程序后记录异常

在Angular 6应用程序中发布请求

如何使更新的内容在 Android 应用程序中发布

在IIS中发布Web应用程序出现不同的错误

关于在本地IIS中发布应用程序

在Azure Web App中发布MVC应用程序

Socketio 未在 NGINX Flask 应用程序中发布

应用程序未在G Suite市场中发布

WindowsCryptographicException:在 Azure 中发布应用程序时拒绝访问

如何从巴基斯坦在iPhone应用程序商店中发布付费应用程序?

支持iOS 9应用程序以在App Store中发布该应用程序

在Alpha / Beta测试中发布应用程序是否会在生产环境中取消发布我的应用程序?

发布应用程序

如何在Windows应用商店中发布带有下载链接的桌面应用程序?

为什么 Flask pytest 不会在应用程序中发布数据?

我在 Google Play 中发布我的应用程序之前丢失了我的密钥库

在F-Droid中发布我的应用程序时出现问题

如何在Google Play控制台中发布Android应用程序捆绑包?

如何生成指向Microsoft商店中发布者的所有应用程序的链接?

如何在聊天应用程序中发布消息之前延迟5秒?

无法上传屏幕截图以在Google Developer Console中发布我的应用程序

如何监视我的应用程序在android中发出的HTTP(获取,发布等)请求

在 Play 商店中发布 Android 应用程序后,Firebase 云消息传递不起作用

如何在带有路由的nodejs应用程序中发布表单数据?

在本地 IIS 中发布应用程序时如何运行 PWA?

更改在 Google Play 商店中发布的应用程序的包名称

无法在MVC 6 Web Api应用程序中发布任何数据