要求?

问题描述:

我想在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"); 

请建议我一些解决方案。

+0

是'JS代码'你的'test.js'文件吗? –

+0

是的,这是test.js文件 –

+0

require在Web API中不存在,它不是由任何浏览器实现的。如果你想直接导入npm前端包,你可以考虑使用如https://webpack.js.org/get-started/install-webpack/这样的工具 –

你需要安装一个工具(如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/更完整的指南。

p.s.这对每个节点都有效依赖前端支持

+0

你意识到这只是让他的编码体验更糟糕,因为他不明白服务器端模块之间的区别以及它们应该如何使用。但无论如何,似乎试图帮助人们,并给他们关于他们应该做什么的正确信息是毫无意义的。这些答案是动态的,复制粘贴解决方案被接受,而不是暗示用户他们必须做什么,以便他们可以自己学习。欢呼声 – Eduard

+0

嗨@Eduard,放轻松。当然,我不能从paleolitic开始在stackoverflow上给出答案。那家伙下载了一个用于前端使用的npm包,然后他不知道“节点”之外不允许“require”。当你刚接触JavaScript时,可能会发生,他会学习,但也需要完成任务。 –

+0

@Francescoes。我已经集成了webpack,但我在控制台中发现一个错误,说导入声明可能只出现在模块的顶层,请帮我解决,如何解决这个问题 –

出现这种情况becaure require上不存在client-side。请注意0​​包,就像nodeJS作为服务,是backend服务。

因此,你需要通过以下包括火力地堡的SDK:

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

然后使用你所需要的配置初始化SDK。该设置是explaing这里的详细信息:https://www.gstatic.com/firebasejs/3.6.1/firebase.js

干杯!

+0

是的这个解决方案,我知道,但它只会解决firebase.js,如果我将在我的应用程序中添加更多的其他节点模块,那么我仍然会在Firebase托管中获取要求未定义错误 –

+0

@DeeptimanPattnaik您需要了解服务器端和客户端之间存在差异。毕竟,你为什么需要使用nodeJS?您可以简单地添加Firebase的SDK,就像该链接在您桌面上的index.html文件中显示的那样,并且您拥有它。 Npm包,以及与NodeJS有关的所有内容都与后端处理有关,就像你在PHP中有任何经验一样。您可以在app.js/test.js或w/e文件中处理数据,然后输出该路线的答案,或将某些数据保存在某个数据库中。您不能在客户端使用require,除非您运行webpack或其他 – Eduard

+0

我的关注点不仅在Firebase中,我的Web应用程序中包含Firebase以及其他节点模块,并且我试图在Firebase中托管,因此会造成问题我 –