сапер с firebase - выборка не определена

Я получаю эту ошибку при запуске npm run dev

      registerFunctions(firebase$1, fetch.bind(self));
                              ^
ReferenceError: fetch is not defined

Я подумал, что rxfire не импортирует выборку, поэтому я добавляю эту строку в src / server.ts

      global['fetch'] = require('node-fetch');

И ошибка все еще есть, есть предложения? Думаю, мне вообще не пришлось бы этого добавлять.

Я просто использую rxfire в файле src / firebase.ts вот так:

      import firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
import "firebase/functions"; 
import * as config from "./config.json";

firebase.initializeApp(config);

export const auth = firebase.auth();
export const googleProvider = new firebase.auth.GoogleAuthProvider();

export const db = firebase.firestore();
export const functions = firebase.functions();

Спасибо,
J

3 ответа

Это была конкретная ошибка, вызванная попыткой import "firebase/functions"на стороне сервера в моем файле firebase.ts .

Я смог решить это, добавив import 'isomorphic-unfetch'на server.ts . Однако затем я получил эту ошибку:

      registerFunctions(firebase$1, fetch.bind(self));
                                         ^

ReferenceError: self is not defined

Я понял, что, по-видимому, нет объекта для привязки на бэкэнде, поэтому я нашел работу. Мне нужно было не импортировать его на серверную часть, что было более серьезной проблемой Sapper Firebase.

Смотрите мой пост здесь для полного исправления.

I had similar issue with this error stacktrace :

      ReferenceError: fetch is not defined
    at Module.<anonymous> (/var/task/webpack:/Users/dev/projects/node_modules/@firebase/functions/dist/index.esm.js:702:27)
at __webpack_require__ (/var/task/webpack:/webpack/bootstrap:19:1)
at /var/task/webpack:/webpack/bootstrap:83:1
at Object.<anonymous> (/var/task/families.js:87:10)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at Module._require.i.require (/var/task/serverless_sdk/index.js:9:73397)

I solve it by updating the firebase import to

      import * as admin from 'firebase-admin';
import firebase from 'firebase/app';

первая установка whatwg-fetch.

npm i --save whatwg-fetch yarn add --save whatwg-fetch pnpm i --save whatwg-fetch

создать файл ./define-self.js

с этим содержанием

      var global =
  (typeof globalThis !== "undefined" && globalThis) ||
  (typeof self !== "undefined" && self) ||
  (typeof global !== "undefined" && global);

if (!global?.self) {
  global.self = global;
}

на вашем index.svelte/_layout.svelte

      <script context="module">
  import "./define-self";
  import "whatwg-fetch";
</script>
Другие вопросы по тегам