2016-11-30 69 views
0

我想在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/這樣的工具 –

回答

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/更完整的指南。

p.s.這對每個節點都有效依賴前端支持

+0

你意識到這只是讓他的編碼體驗更糟糕,因爲他不明白服務器端模塊之間的區別以及它們應該如何使用。但無論如何,似乎試圖幫助人們,並給他們關於他們應該做什麼的正確信息是毫無意義的。這些答案是動態的,複製粘貼解決方案被接受,而不是暗示用戶他們必須做什麼,以便他們可以自己學習。歡呼聲 – Eduard

+0

嗨@Eduard,放輕鬆。當然,我不能從paleolitic開始在stackoverflow上給出答案。那傢伙下載了一個用於前端使用的npm包,然後他不知道「節點」之外不允許「require」。當你剛接觸JavaScript時,可能會發生,他會學習,但也需要完成任務。 –

+0

@Francescoes。我已經集成了webpack,但我在控制檯中發現一個錯誤,說導入聲明可能只出現在模塊的頂層,請幫我解決,如何解決這個問題 –

1

出現這種情況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中託管,因此會造成問題我 –