Как развернуть существующий API Typescript express в облачных функциях Google - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть машинопись express api, которая в настоящее время размещена в Heroku, сейчас я собираюсь перейти на облачные функции Google.

Итак, я запускаю следующую команду в моем каталоге root моего проекта, в котором находится мой пакет. Файл json существует:

gcloud functions deploy mdm-api --env-vars-file .env.yaml --runtime nodejs8 --trigger-http --entry-point index

Но ничего не получится произойдет, без ошибок и без сообщений, ничего.

У меня также есть папка dist, в которой машинописный текст перенесен в js, когда я запускаю указанную выше команду из этой папки, я получаю следующую ошибку:

Deploying function (may take a while - up to 2 minutes)...failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/srv/index.js:7:35)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

Это мой пакет. json сценариев:

  {
  "name": "midalia-debt-manager-server",
  "version": "1.0.0",
  "description": "A node server for midalia debt manager app",
  "main": "dist/index.js",
  "scripts": {
    "prebuild": "tslint -c tslint.json -p tsconfig.json --fix",
    "build": "tsc",
    "postinstall": "npm run build",
    "prestart": "npm run build",
    "start": "node dist/index.js",
    "dev": "tsc-watch --onSuccess \"node -r dotenv/config .\"",
    "test": "jest --coverage --verbose"
  },
  "repository": "https://github.com/emadgit/midalia-debt-manager",
  "author": "Emad Dehnavi",
  "license": "MIT",
  "private": true,
  "dependencies": {
    "bcrypt": "^3.0.8",
    "compression": "^1.7.4",
    "cors": "^2.8.5",
    "date-fns": "^2.9.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.15",
    "pg": "^7.17.1",
    "tsc-watch": "^4.1.0",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "@types/bcrypt": "^3.0.0",
    "@types/compression": "^1.0.1",
    "@types/cors": "^2.8.6",
    "@types/dotenv": "8.2.0",
    "@types/express": "4.17.2",
    "@types/jest": "^25.1.0",
    "@types/lodash": "^4.14.149",
    "@types/jsonwebtoken": "^8.3.7",
    "@types/node": "^13.5.0",
    "@types/pg": "7.14.1",
    "@types/supertest": "^2.0.8",
    "jest": "^25.1.0",
    "supertest": "^4.0.2",
    "ts-jest": "^25.0.0",
    "tslint": "^6.0.0",
    "typescript": "^3.7.5"
  },
  "jest": {
    "verbose": true,
    "transform": {
      "^.+\\.tsx?$": "ts-jest"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node"
    ]
  }
}

И мой tsconfig:

{
  "compilerOptions": {
    "target": "es6" ,
    "module": "commonjs",
    "lib": [
      "dom",
      "es2017"
    ],
    "sourceMap": true ,
    "outDir": "dist",
    "strict": true ,
    "noImplicitAny": true,
    /* Module Resolution Options */
    "moduleResolution": "node",
    "esModuleInterop": true ,
    "resolveJsonModule": true ,
    "forceConsistentCasingInFileNames": true 
  }
}

Я не смог найти никакой документации о развертывании машинописный код express api для gcf, если кто-то здесь развернул такой проект, буду признателен, если вы сможете дать мне некоторые рекомендации.

Обновление: похожий ответ на самом деле не похож, потому что он не является машинописным проектом. Я могу развернуть свой nodejs javascript в gcf, но проблема в том, что проект написан в машинописном тексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...