【问题标题】:Firebase + Node.js: Error: The XMLHttpRequest compatibility library was not foundFirebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库
【发布时间】:2017-05-04 00:49:55
【问题描述】:

Firebase + Node.js

在 iOS 上:

  1. 已安装 Node.js
  2. npm install firebase --save
  3. 节点 test.js

其中 test.js 是一个连接 Firebase 的非常简单的脚本:

var firebase = require("firebase/app");
require("firebase/auth");

var config = {
   ...
};

var app = firebase.initializeApp(config); // Works fine
firebase.auth().signInWithEmailAndPassword(…); // Throws error

抛出的错误是

Error: The XMLHttpRequest compatibility library was not found.

我忽略了什么?谢谢。

【问题讨论】:

  • 那么你是在节点还是浏览器中运行代码?
  • 你用的是什么浏览器?
  • 没有浏览器。命令行界面。只需运行直接作为客户端执行的节点 JavaScript 引擎。

标签: javascript node.js firebase


【解决方案1】:

我在使用 Angularfire2 和通用服务器端渲染时遇到了同样的问题。我通过将xmlhttprequest 添加到我的server.js 文件中解决了这个问题。

就像这样:

npm install xmlhttprequest --save

并像这样添加它:

global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest;

也许它对某人有帮助!

【讨论】:

  • 我做了这个,忘记了,然后花了三天时间尝试调试一个firebase存储上传问题。这个包干扰了 firebase 上传文档的能力。当心。
  • @orlandter 用一些内容更新你的答案,希望你不介意。
【解决方案2】:

嗯嗯。有趣的。通过将多个“require”行(取自 Firebase 文档)更改为单个:

var firebase = require("firebase");

它开始工作得很好。

【讨论】:

    【解决方案3】:

    要使 Firebase 服务器端渲染正常工作,您需要安装:

    • npm i xmlhttprequest ws -s
    • npm i bufferutil utf-8-validate -s

    然后在 server.ts 文件(在根文件夹中找到)添加:

    (global as any).XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
    

    阅读本教程的更多信息:here

    【讨论】:

      【解决方案4】:

      经过2天的努力,终于搞定了!

      您不应该将 firebase 代码放在构造函数中。将其移至 componentDidMount() 方法。并将函数移到构造函数之上。

      希望这对某人有所帮助。

      【讨论】:

      • 这确实有帮助,我想。我用的是 Sapper,但原理应该是一样的。不幸的是,它似乎只是在前端运行该代码。有没有可能这也是你的情况?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      • 2019-08-31
      • 1970-01-01
      • 2022-08-09
      相关资源
      最近更新 更多