Развертывание функций облака ошибок — развертывание Firebase

#firebase #npm #google-cloud-firestore #google-cloud-functions

#firebase #npm #google-cloud-firestore #google-cloud-функции

Вопрос:

Ошибка, возвращающаяся при выполнении команды развертывания firebase. Я попробовал некоторые параметры конфигурации, но ни один из них не сработал.

Ошибка развертывания Firebase

 === Deploying to '###'...

i  deploying functions
Running command: npm --prefix "%RESOURCE_DIR%" run lint

> functions@ lint C:usCloudfunctions
> tslint --project tsconfig.json


WARNING: C:/usCloud/functions/src/index.ts:13:10 - bodyParser is deprecated.
WARNING: C:/usCloud/functions/src/index.ts:14:10 - bodyParser is deprecated.

Running command: npm --prefix "%RESOURCE_DIR%" run build

> functions@ build C:usCloudfunctions
> tsc

node_modules/@google-cloud/firestore/types/firestore.d.ts:23:1 - error TS6200: Definitions of the following identifiers conflict with those in another file: DocumentData, UpdateData, Firestore, GeoPoint, Transaction, WriteBatch, WriteResult, DocumentReference, DocumentSnapshot, QueryDocumentSnapshot, OrderByDirection, WhereFilterOp, Query, QuerySnapshot, DocumentChangeType, CollectionReference, FieldValue, FieldPath, Timestamp, v1beta1, v1, OK, CANCELLED, UNKNOWN, INVALID_ARGUMENT, DEADLINE_EXCEEDED, NOT_FOUND, ALREADY_EXISTS, PERMISSION_DENIED, RESOURCE_EXHAUSTED, FAILED_PRECONDITION, ABORTED, OUT_OF_RANGE, UNIMPLEMENTED, INTERNAL, UNAVAILABLE, DATA_LOSS, UNAUTHENTICATED, FirebaseFirestore

23 declare namespace FirebaseFirestore {
   ~~~~~~~

  node_modules/firebase-functions-helper/node_modules/@google-cloud/firestore/types/firestore.d.ts:25:1
    25 declare namespace FirebaseFirestore {
       ~~~~~~~
    Conflicts are in this file.

node_modules/firebase-functions-helper/node_modules/@google-cloud/firestore/types/firestore.d.ts:25:1 - error TS6200: Definitions of the following identifiers conflict with those in another file: DocumentData, UpdateData, Firestore, GeoPoint, Transaction, WriteBatch, WriteResult, DocumentReference, DocumentSnapshot, QueryDocumentSnapshot, OrderByDirection, WhereFilterOp, Query, QuerySnapshot, DocumentChangeType, CollectionReference, FieldValue, FieldPath, Timestamp, v1beta1, v1, OK, CANCELLED, UNKNOWN, INVALID_ARGUMENT, DEADLINE_EXCEEDED, NOT_FOUND, ALREADY_EXISTS, PERMISSION_DENIED, RESOURCE_EXHAUSTED, FAILED_PRECONDITION, ABORTED, OUT_OF_RANGE, UNIMPLEMENTED, INTERNAL, UNAVAILABLE, DATA_LOSS, UNAUTHENTICATED, FirebaseFirestore

25 declare namespace FirebaseFirestore {
   ~~~~~~~

  node_modules/@google-cloud/firestore/types/firestore.d.ts:23:1
    23 declare namespace FirebaseFirestore {
       ~~~~~~~
    Conflicts are in this file.

node_modules/firebase-functions-helper/node_modules/@google-cloud/firestore/types/firestore.d.ts:168:5 - error TS2374: Duplicate string index signature.

168     [key: string]: any; // Accept other properties, such as GRPC settings.
        ~~~~~~~~~~~~~~~~~~~


Found 3 errors.

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! functions@ build: `tsc`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the functions@ build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:Users##AppDataRoamingnpm-cache_logs2020-08-26T16_49_58_562Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code2
  

Мой индекс.ts

 import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as firebaseHelper from 'firebase-functions-helper/dist';
import * as express from 'express';
import * as bodyParser from 'body-parser';

admin.initializeApp(functions.config().firebase);
const db = admin.firestore;

const app = express();
const main = express();

main.use(bodyParser.json());
main.use(bodyParser.urlencoded({extended: false}));
main.use('/api/v1', app);

const trackerCollection = 'tracker';
export const webApi = functions.https.onRequest(main);

app.patch('/tracker/:tid', async(req, res) => {
    try {
        await firebaseHelper.firestore.updateDocument(db, trackerCollection, req.params.tid, req.body);
        res.status(200).send('Update Success');
    } catch (error) {
        res.status(204).send('Patch Error');
    }
})
  

tsconfig.json — Исходное состояние, без изменений.

 {
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017"
  },
  "compileOnSave": true,
  "include": [
    "src"
  ],
}
  

package.json — Исходное состояние, без изменений.

 {
  "name": "functions",
  "scripts": {
    "lint": "tslint --project tsconfig.json",
    "build": "tsc",
    "serve": "npm run build amp;amp; firebase emulators:start --only functions",
    "shell": "npm run build amp;amp; firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "10"
  },
  "main": "lib/index.js",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1",
    "firebase-functions-helper": "^0.8.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0",
    "tslint": "^5.12.0",
    "typescript": "^3.9.7"
  },
  "private": true
}
  

Я изменил некоторые настройки typescript, но это не сработало. Я вернул все в исходное состояние.

Комментарии:

1. Все ваши зависимости несколько устарели. Я предлагаю модернизировать все, возможно, начав заново с нового шаблона, созданного firebase init .

2. Я нашел некоторую информацию, которая может помочь вам найти причину ошибок. Неперехваченные исключения, созданные вашей функцией, будут отображаться в отчете об ошибках Stackdriver. Обратите внимание, что некоторые неперехваченные исключения, например, те, которые генерируются асинхронно, могут вызвать «холодный запуск» при вызове функции в будущем. Это снижает производительность функции. Я нашел эту информацию здесь: firebase.google.com/docs/functions/reporting-errors

3. @DougStevenson Я перезапустил проект, и он сработал. Спасибо.

Ответ №1:

По-видимому, выполнение команды firebase init разрешило этот сценарий.