2016-11-30 7 views
0

Ich versuche, eine HTML-Datei in der Firebase-Staging-Umgebung auszuführen. Ich habe Firebase npm Paket in der JS-Code verwendet. Beim Ausführen im Browser wird jedoch der Fehler "Erforderlich ist nicht definiert" angezeigt.require ist in Firebase nicht definiert?

HTML-Code:

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

JS-Code:

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

Bitte empfehlen Sie mir irgendeine Lösung.

+0

ist der 'JS-Code' Ihre' test.js' Datei? –

+0

Ja, es ist die test.js-Datei –

+0

require existiert nicht in der Web-API und wird von keinem Browser implementiert. Sie können über ein Tool wie https://webpack.js.org/get-started/install-webpack/ nachdenken, wenn Sie npm Frontend-Pakete direkt importieren möchten –

Antwort

1

Sie müssen ein Tool einrichten (z. B. webpack), um Ihre Abhängigkeiten zu verwalten. Auf diese Weise können Sie require (oder import es6 sintax) Bibliotheken direkt in Ihre .js Dateien.

in webpack.config.js

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

webpack zu sagen, welche die entry Datei Ihrer Anwendung und lassen Sie es die bundle für Sie bauen:

Eine mögliche Einrichtung könnte die folgende sein.

dann in index.js können Sie:

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

zu https://webpack.js.org/configuration/ für eine vollständige Anleitung finden.

p.s. das gilt für jeden Knoten mit Frontend-Unterstützung

+0

Sie erkennen, dass dies nur seine Programmiererfahrung verschlimmert, da er den Unterschied zwischen serverseitigen Modulen nicht versteht und wie genau sie verwendet werden sollten. Aber wie auch immer, es scheint so zu sein, als würde man versuchen, den Leuten auf SO zu helfen und ihnen die richtigen Informationen darüber zu geben, was sie tun sollten, ist sinnlos. Die Antworten, die mot-a-mot sind, Copy-Paste-Lösungen werden akzeptiert, anstatt den Benutzern zu zeigen, was sie tun müssen, damit sie es selbst lernen können. Prost – Eduard

+0

Hallo @ Eduard, nimm es leicht. Sicherlich kann ich nicht von paläolithisch ausgehen, um eine Antwort auf stackoverflow zu geben. Der Typ hat ein npm-Paket heruntergeladen, das für die Verwendung im Frontend gedacht ist. Dann wusste er nicht, dass "require" außerhalb der "node" -Welt nicht erlaubt ist. Wenn Sie neu in Javascript sind, kann es passieren, Er wird lernen, aber man muss auch Dinge erledigen. –

+0

@Francescoes. Ich habe Webpack integriert, aber ich bekomme einen Fehler in der Konsole, der besagt, Import-Deklarationen dürfen nur auf der obersten Ebene eines Moduls erscheinen, bitte helfen Sie mir, wie dieses Problem zu lösen –

1

Dies geschieht, beaceure require existiert nicht auf der client-side. Beachten Sie, dass npm Pakete, ebenso wie nodeJS als Service, backend Dienste sind.

Daher müssen Sie Firebase SDK über die folgenden gehören:

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

Dann initialisieren das SDK mit der Config Sie benötigen. Das Setup wird hier genauer erklärt: https://www.gstatic.com/firebasejs/3.6.1/firebase.js

Prost!

+0

ja diese Lösung ich weiß, aber es wird nur für firebase.js lösen, was ist, wenn ich mehr andere Knotenmodule in meiner Anwendung hinzufügen werde, dann werde ich immer noch Get Request ist kein Fehler in Firebase-Hosting definiert –

+0

@DeptimanPattnaik Sie müssen verstehen, dass es einen Unterschied zwischen Server-Seite und Client-Seite gibt. Afterall, warum müssen Sie nodeJS verwenden?Sie können das Firebase-SDK einfach hinzufügen, indem Sie den Link in einer 'index.html'-Datei auf Ihrem Desktop anzeigen, und Sie haben es dort. Npm-Pakete und alles, was NodeJS betrifft, hängt mit der Backend-Verarbeitung zusammen, genau wie in PHP, wenn Sie Erfahrung haben. Sie verarbeiten Daten in Ihrer Datei app.js/test.js oder w/e, dann geben Sie eine Antwort für diese Route aus oder speichern einige Daten in einer Datenbank. Sie können nicht benötigen auf Client-Seite, es sei denn, Sie führen Webpack oder andere – Eduard

+0

Meine betroffenen nicht nur Firebase, in meiner Web-Anwendung Firebase sowie andere Knoten-Module sind enthalten, und ich versuche, in Firebase zu hosten, so schafft dies Problem für mir –

Verwandte Themen