Firebase Show Error при попытке запустить функции локально - PullRequest
0 голосов
/ 05 июня 2019

Отображение ошибки Firebase всякий раз, когда я запускаю функцию локально с помощью эмулятора в CLI

$ firebase emulators:start --only functions

Запуск эмуляторов: ["functions"]

функции: использование узла @ 8 от хоста.

функции: эмулятор запущен в http://localhost:5001

functions: просмотр «E: \ dir \ functions» для облачных функций ...

Ошибка: не удается найти модуль 'E: \ dir \ functions'

в Function.Module._resolveFilename (module.js: 548: 15)

в Function.Module._load (module.js: 475: 25)

в Module.require (module.js: 597: 17)

по требованию (внутренний / module.js: 11: 18)

в C: \ Users \ d \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ emulator \ functionsEmulatorRuntime.js: 459: 29

в Generator.next ()

в C: \ Users \ d \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ emulator \ functionsEmulatorRuntime.js: 7: 71

на новый Promise ()

в __awaiter (C: \ Users \ d \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ emulator \ functionsEmulatorRuntime.js: 3: 12)

at main (C: \ Users \ d \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ emulator \ functionsEmulatorRuntime.js: 421: 12)

Ваша функция была уничтожена, поскольку вызвала необработанную ошибку.

Я использую машинопись для написания облачных функций.

вот мой index.ts

import * as functions from 'firebase-functions';
import * as admin from "firebase-admin";

var cert = require("./skey.json");

admin.initializeApp({
    credential: admin.credential.cert(cert),
    databaseURL: "https://bhau-tk.firebaseio.com"
});

exports.basicHTTP = functions.https.onRequest((req, res) => {
    res.send("Hello world!!");
})

package.json содержит

{
  "name": "functions",
  "scripts": {
    "lint": "tslint --project tsconfig.json",
    "build": "tsc",
    "serve": "npm run build && firebase serve --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "main": "lib/index.js",
  "dependencies": {
    "firebase-admin": "~7.0.0",
    "firebase-functions": "^2.3.0",
    "firebase-functions-test": "^0.1.6"
  },
  "devDependencies": {
    "tslint": "^5.12.0",
    "typescript": "^3.2.2"
  },
  "private": true
}

и структура проекта is

enter image description here

1 Ответ

0 голосов
/ 06 июня 2019

Следует помнить, что конфигурация вашего проекта компилирует исходные файлы TS в src и помещает полученные файлы JavaScript в lib.Итак, вы должны ссылаться на вещи в вашей папке функций относительно этого местоположения.

Поскольку ваш скомпилированный index.js находится в lib, а ваш файл skey.json находится в src, вы должны будете ссылаться на него так, чтобыпуть:

var cert = require("../src/skey.json");

Однако я бы так не поступил.Я бы положил skey.json в папку функций (так как это не исходный код) и обращался к нему так:

var cert = require("../skey.json");
...