【问题标题】:require is not defined in Firebase?需求没有在 Firebase 中定义?
【发布时间】:2020-11-27 20:16:37
【问题描述】:

我正在尝试在 Firebase 暂存环境中运行一个 html 文件。我在 js 代码中使用了 Firebase npm 包。但是在浏览器中运行时会抛出错误“require is not defined”。

HTML 代码:

<html>   
<body>
<h1>Hello World</h1>
</body>
<script type="text/javascript" src="./js/test.js"></script>
</html>

JS 代码:

var Firebase = require('firebase');
var dataRef = new Firebase('firebase url');
console.log("Firebase : "+Firebase+" -- dataRef :: "+dataRef)
dataRef.set("Firebase Require");

请给我一些解决方案。

【问题讨论】:

  • JS code 是您的test.js 文件吗?
  • 对,就是 test.js 文件
  • require 在 Web API 中不存在,也没有被任何浏览器实现。如果想直接导入npm前端包可以考虑使用webpack.js.org/get-started/install-webpack之类的工具
  • webpack 模块能否在 Firebase 托管中工作
  • 当然,我在这个项目中使用它github.com/francescoes/scrabble,看看

标签: javascript node.js firebase


【解决方案1】:

您需要设置一个工具(例如webpack)来管理您的依赖项。通过这种方式,您将能够直接在您的.js 文件中使用require(或import es6 sintax)库。

可能的设置如下:

webpack.config.js

module.exports = {
  entry: './index.js',
  output: {
    filename: 'bundle.js'
  }
}

告诉 webpack 哪个是您的应用程序的 entry 文件,并让它为您构建 bundle

然后在index.js你可以使用:

import Firebase from 'firebase';
var dataRef = new Firebase('firebase url');
console.log("Firebase : "+Firebase+" -- dataRef :: "+dataRef)
dataRef.set("Firebase Require");

请参阅https://webpack.js.org/configuration/ 以获得更完整的指南。

附言这对于具有前端支持的每个节点依赖项都有效

【讨论】:

  • 您意识到这只会让他的编码体验变得更糟,因为他不了解服务器端模块之间的区别以及应该如何使用它们。但无论如何,似乎试图在 SO 上帮助人们并为他们提供关于他们应该做什么的正确信息是没有意义的。答案是mot-a-mot,复制粘贴解决方案被接受,而不是提示用户他们必须做什么,以便他们自己学习。干杯
  • 嗨@Eduard,放轻松。当然,我不能从旧石器时代开始就 stackoverflow 给出答案。这家伙下载了一个用于前端使用的npm包,然后他不知道requirenode世界之外是不允许的。当您是 javascript 新手时,它可能会发生,他会学习,但也需要完成工作。
【解决方案2】:

发生这种情况是因为requireclient-side 上不存在。请注意,npm 包,就像 nodeJS 作为服务一样,是 backend 服务。

因此您需要通过以下方式包含 Firebase 的 SDK:

<script src="https://www.gstatic.com/firebasejs/3.6.1/firebase.js"></script>

然后使用您需要的配置初始化 SDK。此处对设置进行了更详细的说明:https://www.gstatic.com/firebasejs/3.6.1/firebase.js

干杯!

【讨论】:

  • 是的,我知道这个解决方案,但它只能解决 firebase.js,如果我在我的应用程序中添加更多其他节点模块,那么我仍然会在 Firebase 托管中得到 require is not defined 错误
  • @DeeptimanPattnaik 您需要了解服务器端和客户端之间的区别。毕竟,为什么需要使用 nodeJS ?您可以简单地添加 Firebase 的 SDK,就像该链接在您桌面上的 index.html 文件中显示的那样,您就拥有了它。 Npm 包,以及关于 NodeJS 的一切都与后端处理有关,就像你在 PHP 中所做的一样,如果你有任何经验的话。您在 app.js / test.js 或 w/e 文件中处理数据,然后输出该路由的答案,或将一些数据保存在某个数据库中。除非您运行 webpack 或其他人,否则您不能在客户端使用 require
  • 我关心的不仅是 Firebase,在我的 Web 应用程序中还包括 Firebase 以及其他节点模块,而且我正在尝试在 Firebase 中托管,所以这给我带来了问题
  • 问题..你知道客户端和服务器端的区别吗?我可以做任何类型的 Firebase 应用程序,而无需使用任何 NodeJS。
  • 是的兄弟,现在一个孩子也知道客户端和服务器端,好的,请告诉我,如何在 Firebase 应用程序中集成 sendgrid
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
相关资源
最近更新 更多