У меня есть машинопись 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, но проблема в том, что проект написан в машинописном тексте.